Guten Tag, ich hab gestern Sensoren in meinem Aufbau getauscht. Im Prinzip habe ich 2 optische Sensoren an den analogen Inputs des Ardu hängen, das hat funktioniert solange ich 2 mal [[http://docs-europe.electrocomponents.com/webdocs/0d1b/0900766b80d1bdc0.pdf]] mit 500 für die Diode und 50k für den Detector verwendet hab. Gestern wollte ich noch andere Sensoren testen(gleiche Widerstände): [[http://www.vishay.com/docs/83752/tcrt1000.pdf]] Seltsamer Weise funktionieren die auch, aber Bei der Datenübertragung wirds komisch, sobald das Signal am A0/1 ansteigt wird die serielle Übertragung sehr langsam. Auf dem Serial Monitor äußert sich das in dem bei nem Signal von >400 nur noch ca. 1 Wert/sek übertragen wird, ist das analog Signal < 100 läuft die Übertragung scheinbar normal(0,5sek oder schneller). Zur Auswertung meiner Daten habe ich eine Art Oszi gebastelt, dort hat das Ganze den Effekt das Informationen vom Sensor mit bis zu 10 sek Verzögerung ankommen oder sich der Ardu komplett aufhängt. Meine erste Idee war ja das ich zuviel Strom vom Board ziehe, nur wenn ich den TCRT1000 nur als Detector(ohne IR Diode) betreibe und nur einen der Sensoren anschließe habe ich dasselbe Problem. Vielleicht hat ja wer ne Idee, ich weiß ehrlich gesagt nicht ob ich den Fehler in der Programmierung oder Elektronik suchen soll. Grüße
Ruediger schrieb: > Vielleicht hat ja wer ne Idee, ich weiß ehrlich gesagt nicht ob ich den > Fehler in der Programmierung oder Elektronik suchen soll. Ich denke mal: Programmierung. Da wird dir nicht viel anderes übrig bleiben, als die LED_Debug_Technik anzuwenden. Am Anfang deiner loop() schaltest du eine LED ein, am Ende wieder aus. Und dann verschiebst du das Einschalten Zeile für Zeile nach unten, bis du einen deutlichen Sprung in der Helligkeit der LED siehst. Die Anweisung, über die du das Einschalten gerade drüber geschoben hast, ist dann diejenige, die einen wesentlichen Beitrag zur Laufzeit geliefert hat. Wichtig: deutlicher Sprung. Denn je weiter nach 'unten' du das Einschalten verschiebst, desto dunkler wird die LED auch. Aber das geht langsam. Bei dem Verhalten, welches du beschreibst, müsste es aber einen wirklich deutlichen Sprung in der Helligkeit geben. Eventuell vorher mal die Technik an einem einfach Code ausprobieren, damit du lernst, die Helligkeits-Abnahme zu interpretieren.
ok, Problem 1: Ich habe bisher beide Analogeingänge parallel abgefragt, anscheinend war das keine gute Idee. Werden jetzt beide abwechseln befragt. Problem 2: Der Ardu hört auf zu senden, aber Processing gibt weiter sich ändernde Daten raus. Sieht danach aus als ob es seinen Puffer(keine Ahnung ob das der Serial Puffer ist) leerschreibt. Mit den alten Sensoren ist das Problem nicht augetretetn da ich diese nur senden lies wenn sich der analog Input um min. 5% ändert. Die neuen Sensoren reagieren schon aufs 50Hz flackern und senden somit ständig, das führt dazu das Processing anscheinend überladen wird und noch eine Weile brauch um die Daten auszugeben. Wie groß ist eigentlich der SerialPuffer für Pr.? Letztendlich ist daran wohl meine "drawSensValues" schuld die einfach zu langsam ist.
Hier mal der Codeschnipsel
1 | void drawSensorValue1 () { |
2 | float yPos = sensor1act; |
3 | // draw the line in a pretty color: |
4 | stroke(80, 80, 180, 120); |
5 | line(xSens1, height, xSens1, height - yPos/3); |
6 | // at the edge of the screen, go back to the beginning: |
7 | if (xSens1 >= width) { |
8 | xSens1 = 0; |
9 | // clear the screen by resetting the background: |
10 | background(#081640); |
11 | } |
12 | else { |
13 | // increment the horizontal position for the next reading: |
14 | xSens1=xSens1+0.5; |
15 | } |
16 | } |
float auf dem Atmega verwenden ist eine schlechte Idee. Macht ihn nur extrem langsam.
der codeschnipsel ist aus dem Processing Teil. trotzdem keine gute idee?
der durchlauf ging mir zu schnell und ich hab den teil von 1 auf 0.5 geändert damit er nicht so schnell durch den screen ist. ich muß zugeben ich hab mir viel davon zusammengeklauft und steig an manchen stellen nicht ganz durch den code^^
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.