Im deutschen steht nicht 117ms pro 2cm, sondern 0,117 ms
MfG Klebwax
Guten Abend liebe Community,
ich versuche seit heut mittag den Ultraschall Sensor hc-sr04 für Arduino zu betreiben, ein wenig erfolglos.
Vorab ich habe kein Arduinobaord sondern ein Steckbrett mit einem Atmega8515 und natürlich ein Programmieradapter.
Zum allgemeinen Anschluss, Trigger ist am PortB welcher Ausgang ist. Echo ist an PortA welcher als Eingang definiert wurde und die LED ist mit ihrer Kathode an PortD.
Das Programm soll die LED zum leuchten bringen sobald der Sensor etwas in 50cm erfasst und diese wieder ausschalten sobald das Objekt weg ist.
Hier mein Code:
http://pastebin.com/6Jq9mGTJ
Anbei 2 Datenblätter von den ich meine Daten her nehme die sich aber, wie in den Kommentaren im Code geschrieben, in einer Sache widersprechen.
http://www.mikrocontroller.net/attac...hreibung_3.pdf
http://www.micropik.com/PDF/HCSR04.pdf
Hoffe auf freundliche Hilfe
Mit freundlichen Grüßen
BennIY
Im deutschen steht nicht 117ms pro 2cm, sondern 0,117 ms
MfG Klebwax
Strom fließt auch durch krumme Drähte !
Hups, dann währe das schon Mal richtig ca. 116 bis 117 ticks pro 2cm. Gibt es Einwände zu meinem Programm fehler oder besserungen? Es ist im Moment so, dass die LED nicht leuchtet.
Bist du sicher das was hier passiert die Port B als Ausgang schaltet, und Port A als Eingang? Weil du im beiden Code Teilen das gleiche macht:
Sind Port A und B nun nicht beiden Ausgang, oder beiden Eingang? (Ich kenne mich mit AVR Assembler nicht so gut aus.)
Code:ldi temp, 0xFF ; Port B auf Ausgang out DDRB, temp ldi temp, 0xFF //PortB auf HIGH out PORTB, tempCode:ldi temp, 0xFF // Port A auf Eingang out DDRA, temp out PORTA, temp //Interne Pull UPs
Vieken Dank für den Hinweis, habe das Richtungsregister wie folgt angepasst
Zusätzlich PortD auf Ausgang geschaltet, nun tut sich etwas, in einem gewissen Bereich leuchtet die LED.Code:ldi temp, 0xFF ; Port B auf Ausgang out DDRB, temp ldi temp, 0xFF //PortB auf HIGH out PORTB, temp ldi temp, 0xFF ; Port D auf Ausgang out DDRD, temp ldi temp, 0x00 // Port A auf Eingang out DDRA, temp out PORTA, temp //Interne Pull UPs
Mit der Variable sollDist hatte ich vor, die maximale Distanz in 2cm einzugeben, ab die der Sensor die LED schalten soll. Im Programm steht im oment:
Was für eine Distanz von 10cm stehen soll.Code:ldi solldist, 0x05
Nun ist es so, die LED geht an und komme ich näher oder gehe weiter weg, geht sie aus allerdings liegt dieser Bereich an dem die LED an geht weit über 10cm.
Mein Ziel war es eigentlich sie ab 10cm zum Leuchten zu bringen.
Mache ich sollDist kleiner geht sie auch früher an jedoch wieder aus wenn ich dem Sensor näher komme.
Geändert von BennIY (29.11.2014 um 13:02 Uhr)
Lesezeichen