Sterowanie roletami przez arduino
Ostatnio zmodyfikowano 2016-01-18 17:37
gawron631 Temat założony przez niniejszego użytkownika |
Sterowanie roletami przez arduino » 2016-01-15 17:41:00 Witam wszystkich forum. Jestem nowym użytkownikiem dlatego z góry przepraszam jeśli moje pytania są niefachowe, błędnie sformułowane lub niepoprawne. Od pewnego czasu uczę się języka cpp przez zabawę z arduino. Ostatnio chcę zrobić sterowanie roletami, przez bluetooth i włącznik czasowy. Mój problem polega na tym że działa albo jedno albo drugie, prawdopodobnie jest to spowodowane źle zapisaną pętlą while. Moje drugie pytanie w jaki sposób zapisać żeby stan wysoki na wyjściu był tylko przez określony czas w sekundach (sterowanie czasem podnoszenie - opuszczania rolety). Z góry dziękuję za wszelką pomoc w rozwiązaniu tego problemu. void loop() { while( Serial.available() ) delay( 3 ); char c = Serial.read(); readString += c; dt = clock.getDateTime(); Serial.print( dt.hour ); Serial.print( ":" ); Serial.print( dt.minute ); Serial.print( ":" ); Serial.print( dt.second ); Serial.println( "" ); if( readString.length() > 0 ) { Serial.println( readString ); if( readString == "podnies1" ) { digitalWrite( rol1up, HIGH ); } if(( dt.hour == 7 ) &&( dt.minute == 00 ) &&( dt.second == 00 ) ) { digitalWrite( rol1up, HIGH ); } if(( dt.hour == 7 ) &&( dt.minute == 5 ) &&( dt.second == 00 ) ) { digitalWrite( rol1up, LOW ); } if( readString == "opusc1" ) { digitalWrite( rol1down, HIGH ); } if(( dt.hour == 17 ) &&( dt.minute == 00 ) &&( dt.second == 00 ) ) { digitalWrite( rol1up, HIGH ); } if(( dt.hour == 17 ) &&( dt.minute == 5 ) &&( dt.second == 00 ) ) { digitalWrite( rol1up, LOW ); } if( readString == "stop1" ) { digitalWrite( rol1up, LOW ); digitalWrite( rol1down, LOW ); }
|
|
DejaVu |
» 2016-01-18 17:37:16 Być może coś takiego powinieneś napisać: void setHighForTime( auto _akcja, unsigned _miliseconds ) { digitalWrite( _akcja, HIGH ); std::this_thread::sleep_for( std::chrono::milliseconds( _miliseconds ) ); digitalWrite( _akcja, LOW ); }
if( readString == "podnies1" ) setHighForTime( rol1up, 1000 );
if( dt.hour == 7 && dt.minute == 00 && dt.second == 00 ) setHighForTime( rol1up, 1000 );
if( dt.hour == 7 && dt.minute == 5 && dt.second == 00 ) setHighForTime( rol1down, 1000 );
|
|
« 1 » |