15-01-2016, 19:23
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 );
}
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 );
}