Hallo zusammen, habe auf meinem Uno ein Multifunctionshield und einen HC-SR04 (Ultraschallsensor). Der gemessene Abstand wird auf der Digit-Anzeige dargestellt. Der Sketch funktioniert bis auf drei Kleinigkeiten ganz gut. Mit diesen drei Kleinigkeiten wollte ich mich gerne an euch wenden ;-) 1. Soll über 80 cm überhaupt nichts auf der Digitanzeige erscheinen um Strom zu sparen. 2. Leuchten im Moment die LED's ab drücken von Button 1 bzw. 2. Dies soll nicht so sein. Diese sollen eigentlich nur blinken sobald der Abstand kleiner 10cm ist. Anbei mein Murks ;-) #include <TimerOne.h> #include <Wire.h> #include <MultiFuncShield.h> const int TrigPin = 5; const int EchoPin = 6; enum sonarModeValues { MODE_SONAR_OFF, MODE_SONAR_ON }; byte sonarMode = MODE_SONAR_OFF; void setup() { Serial.begin(9600); pinMode(TrigPin, OUTPUT); pinMode(EchoPin, INPUT); Timer1.initialize(); MFS.initialize(&Timer1); MFS.write("."); // MFS.writeLeds(LED_ALL, ON); //GEHT } void loop() { byte btn = MFS.getButton(); switch (sonarMode) { case MODE_SONAR_OFF: if (btn == BUTTON_1_PRESSED) { sonarMode = MODE_SONAR_ON; // MFS.beep(5, 95, 1,0,0); MFS.write("on"); MFS.writeLeds(LED_ALL, ON); } if (btn == BUTTON_2_PRESSED) { sonarMode = MODE_SONAR_ON; MFS.beep(5, 95, 1,0,0); MFS.write("on"); MFS.writeLeds(LED_ALL, ON); } break; case MODE_SONAR_ON: if (btn == BUTTON_3_PRESSED) { sonarMode = MODE_SONAR_OFF; MFS.beep(0); MFS.write("aus"); MFS.blinkDisplay(DIGIT_ALL, OFF); MFS.writeLeds(LED_ALL, OFF); MFS.initSonar(); } else { int distance = MFS.getSonarDataCm(TrigPin, EchoPin); if (distance != 0 && distance < 2000) { int offPeriod = distance - 6; if (offPeriod < 0) { offPeriod = 0; } MFS.write(distance); MFS.setBeepOffPeriod(offPeriod); MFS.blinkDisplay(DIGIT_ALL, distance < 15); MFS.blinkLeds(LED_ALL, distance < 10); if (distance < 7) MFS.write("STOP"); } delay(100); } break; } } Danke schon mal! Gruß Franz
Hallo, zu 1: Du hast mit "if (distance != 0 && distance < 2000)" deine Anzeige eingeschränkt auf 2000 schätzungsweise mm. Also grenze sie doch einfach auf 80cm bzw 800mm ein und fertig... zu 2: Einfach die beiden "MFS.writeLeds(LED_ALL, ON);" unter BUTTON_1_PRESSED und BUTTON_2_PRESSED rausschmeißen.
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.