Hallo Leute, ich habe den ADNS mittels SPI korrekt ausgelesen und die Werte am Display anzeigen können. Da ich den Display in meinem Projekt nicht brauche, habe ich dann abgebaut und den Sensor direkt über das Serielle Monitor überwacht. Ich habe allerdings festgestellt, dass ich nun keine dx/dy Änderungen habe, sondern einen konstanten Wert (255) bei dx. Motion und dy bleibt immer auf 0.,. Der Sensor hat aber vor 10min mit dem Display noch funktioniert. Was kann die Ursache dafür sein? Die Verkabelung habe ich 10x schon überprüft. Jedoch an der Verkabelung ist es leider nicht. Was könnten noch Ursachen dafür sein?
der ist sauer weil er jetzt kein Display mehr hat oder weil Freitag ist. Mal im Ernst ohne Plan oder Code ? Die Glaskugel sagt Du hattest das Display am gleichen Port wie den Sensor. Jetzt fehlt der Pull Up vom Display !
Beitrag #5015714 wurde vom Autor gelöscht.
Ob das wirklich vom Display kommt? Lade nochmal meine Schaltung und den Code hoch...
1 | // include the SPI library:
|
2 | #include <SPI.h> |
3 | |
4 | // setup pins
|
5 | int nReset = 48; |
6 | int nCS = 53; |
7 | |
8 | void setup(){ |
9 | //set pin I/O direction
|
10 | pinMode (nReset, OUTPUT); |
11 | pinMode (nCS, OUTPUT); |
12 | //put the device in reset not chip selected
|
13 | digitalWrite(nReset,LOW); |
14 | digitalWrite(nCS,HIGH); |
15 | //initialize SPI
|
16 | SPI.begin(); |
17 | SPI.setDataMode(SPI_MODE3); |
18 | //start a serial port for debugging
|
19 | Serial.begin(115200); |
20 | delay(1000); |
21 | Serial.println("startup complete"); |
22 | |
23 | |
24 | }
|
25 | |
26 | void loop(){ |
27 | unsigned int read_data; |
28 | delay(1000); |
29 | //enable ADNS
|
30 | digitalWrite(nReset,HIGH); |
31 | //startup time
|
32 | delay(1000); |
33 | //read and print a register map
|
34 | Serial.println("ADNS-5020 Register Map"); |
35 | Serial.println("Addr 0x00 - Data " + String(ADNS_read(0x00))); |
36 | Serial.println("Addr 0x01 - Data " + String(ADNS_read(0x01))); |
37 | Serial.println("Addr 0x02 - Data " + String(ADNS_read(0x02))); |
38 | Serial.println("Addr 0x03 - Data " + String(ADNS_read(0x03))); |
39 | Serial.println("Addr 0x04 - Data " + String(ADNS_read(0x04))); |
40 | Serial.println("Addr 0x05 - Data " + String(ADNS_read(0x05))); |
41 | Serial.println("Addr 0x06 - Data " + String(ADNS_read(0x06))); |
42 | Serial.println("Addr 0x07 - Data " + String(ADNS_read(0x07))); |
43 | Serial.println("Addr 0x08 - Data " + String(ADNS_read(0x08))); |
44 | Serial.println("Addr 0x09 - Data " + String(ADNS_read(0x09))); |
45 | Serial.println("Addr 0x0A - Data " + String(ADNS_read(0x0A))); |
46 | delay(1000); |
47 | }
|
48 | |
49 | unsigned int ADNS_read(unsigned int address){ |
50 | unsigned int data; |
51 | // take the CS pin low to select the chip:
|
52 | digitalWrite(nCS,LOW); |
53 | // send in the address and value via SPI:
|
54 | SPI.transfer(address); |
55 | pinMode(MOSI, INPUT); |
56 | data = SPI.transfer(0x00); |
57 | pinMode(MOSI, OUTPUT); |
58 | // take the SS pin high to de-select the chip:
|
59 | digitalWrite(nCS,HIGH); |
60 | return(data); |
61 | }
|
:
Bearbeitet durch User
Kann sich keiner den Fehler vorstellen? bin schon seit 2 Tagen da dran, bekomme immer wieder die selben werte
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.