Инструменты пользователя

Инструменты сайта


arduino_cpp

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
arduino_cpp [2018/11/16 10:45]
super_admin [Traffic lights example (модифицированная версия)]
arduino_cpp [2018/11/16 18:00]
super_admin [Traffic lights example (без использования блокировочных функций delay())]
Строка 115: Строка 115:
  
 </​code>​ </​code>​
 +
 +===== Traffic lights example (без использования блокировочных функций delay()) =====
  
 <code C++> <code C++>
Строка 127: Строка 129:
  * Pedestrian Red light to pin 4  * Pedestrian Red light to pin 4
  * Pedestrian Green light to pin 3  * Pedestrian Green light to pin 3
- * Pedestrian ​pushbutton_1 ​pin 2 (it is connected to the GND, therefore internal PULLUP resistor must be ON)+ * Pedestrian ​pushbutton ​pin 2 (it is connected to the GND, therefore internal PULLUP resistor must be ON)
  ​* ​  ​* ​
  * Arduino IDE 1.6.12  * Arduino IDE 1.6.12
Строка 136: Строка 138:
  int p_red = 4, p_green = 3;  int p_red = 4, p_green = 3;
  int button_1 = 2;  int button_1 = 2;
 +
  int butState_1 = HIGH;  int butState_1 = HIGH;
  int butDelay = 10;  int butDelay = 10;
  int checkButton_1 = 0;  int checkButton_1 = 0;
- ​uint32_t ​prevButt_1_time ​= 0;+ ​uint32_t ​prevButt_time_1 ​= 0;
  ​uint32_t prevTraffic_time = 0;  ​uint32_t prevTraffic_time = 0;
    
Строка 158: Строка 161:
     digitalWrite(p_red,​ r);     digitalWrite(p_red,​ r);
     digitalWrite(p_green,​ g);     digitalWrite(p_green,​ g);
 +}
 +
 +uint8_t checkButton(){
 +  uint8_t newButtonState = digitalRead(button_1);​
 +  if(newButtonState != butState_1){
 +    Serial.print("​newButtonState ​ = "); Serial.println(newButtonState);​
 +    return true;
 +  } else {
 +    return false;
 +  }
 } }
    
Строка 171: Строка 184:
    
 void loop() { void loop() {
-  // Check button_1 +  // Check button 
-  ​if(digitalRead(button_1) != butState_1 && !checkButton_1) { +
-    Serial.println("​checkButton_1"​);​ +
-    checkButton_1 = 1; +
-    prevButt_1_time = millis(); +
-    Serial.println(flag);​+
  
-  } 
-  if (checkButton_1 && (millis() - prevButt_1_time) >= butDelay){ 
-    checkButton_1 = 0; 
-    if (digitalRead(button_1) != butState_1){ 
-        flag = true; 
-      } 
-    Serial.println(flag);​ 
-  } 
-  ​ 
-  //​delay(del);​ 
   switch(state){   switch(state){
     case 0:     case 0:
       change_traffic_lights(0,​0,​1);​       change_traffic_lights(0,​0,​1);​
       change_pedastrian_lights(1,​0);​       change_pedastrian_lights(1,​0);​
-      if(flag){ +      ​ 
-        prevTraffic_time = millis(); +      ​if(checkButton()){ 
-        ​flag ​false+          prevTraffic_time = millis(); ​  
-         ​Serial.print("case 0, state = ");Serial.println(flag); ​       ​ +          ​state ​5    
-        ​state = 5; +          Serial.println("​state = 0; "); 
-      ​}+        }
     break;     break;
     case 5:     case 5:
Строка 203: Строка 202:
       change_pedastrian_lights(1,​0);​       change_pedastrian_lights(1,​0);​
       if(millis() - prevTraffic_time >= 3000){       if(millis() - prevTraffic_time >= 3000){
-        prevTraffic_time = millis(); +        prevTraffic_time = millis(); ​  
- +          state = 3;    
-          ​Serial.print("​case 5, state = 3 ");​Serial.println(flag); ​        +      ​Serial.println("state = 5"​); ​  
-          ​state = 3     +
         }         }
     break;     break;
Строка 216: Строка 214:
         prevTraffic_time = millis();         prevTraffic_time = millis();
  
-          Serial.print("case 1, state = ");Serial.println(flag); ​       ​+          Serial.println("​state = 1; "​); ​     
           state = 0;      ​           state = 0;      ​
         }         }
Строка 225: Строка 223:
       change_traffic_lights(1,​0,​0);​       change_traffic_lights(1,​0,​0);​
       change_pedastrian_lights(0,​1);​       change_pedastrian_lights(0,​1);​
-      if(millis() - prevTraffic_time >= 10000){+      if(millis() - prevTraffic_time >= 5000){
         prevTraffic_time = millis();         prevTraffic_time = millis();
  
-          ​Serial.print("case 2, state = ");Serial.println(flag); ​        +        ​Serial.println("​state = 2; "​); ​       
-          ​state = 1;       +        state = 1;       
-        }+       ​}
     break;     break;
    
Строка 239: Строка 237:
         prevTraffic_time = millis();         prevTraffic_time = millis();
  
-          ​Serial.print("case 3, state = ");​Serial.println(flag);         +        ​Serial.println("​state = 3; "​); ​        
-          state = 2;       +        state = 2;       
-        }+      }
     break;     break;
     default:     default:
     break;     break;
   }   }
-  i++; 
-  
 } }
- 
 </​code>​ </​code>​
arduino_cpp.txt · Последние изменения: 2019/06/24 20:29 (внешнее изменение)