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

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


arduino_cpp

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия Следующая версия справа и слева
arduino_cpp [2018/11/14 13:46]
super_admin
arduino_cpp [2018/11/16 10:45]
super_admin [Traffic lights example (модифицированная версия)]
Строка 106: Строка 106:
         i = 1;         i = 1;
       }       }
 +    break;
 +    default:
 +    break;
 +  }
 +  i++;
 + 
 +}
 +
 +</​code>​
 +
 +<code C++>
 +/*
 + 
 + * Traffic lights example
 + ​* ​
 + * Red light to pin 7
 + * Yellow light to pin 6
 + * Green light to pin 5
 + ​* ​
 + * Pedestrian Red light to pin 4
 + * Pedestrian Green light to pin 3
 + * Pedestrian pushbutton_1 pin 2 (it is connected to the GND, therefore internal PULLUP resistor must be ON)
 + ​* ​
 + * Arduino IDE 1.6.12
 + */
 + 
 + // Pins
 + int red = 7, yellow = 6, green = 5;
 + int p_red = 4, p_green = 3;
 + int button_1 = 2;
 + int butState_1 = HIGH;
 + int butDelay = 10;
 + int checkButton_1 = 0;
 + ​uint32_t prevButt_1_time = 0;
 + ​uint32_t prevTraffic_time = 0;
 + 
 + // System variables
 + byte state = 0; // initial state
 + 
 + ​unsigned long i = 1; // system counter
 + ​unsigned int del = 100; // system delay legnth
 + ​boolean flag = false;
 + 
 +void change_traffic_lights(uint8_t r,uint8_t y, uint8_t g){
 +    digitalWrite(red,​ r);
 +    digitalWrite(yellow,​ y);
 +    digitalWrite(green,​ g);
 +}
 + 
 +void change_pedastrian_lights(uint8_t r,uint8_t g){
 +    digitalWrite(p_red,​ r);
 +    digitalWrite(p_green,​ g);
 +}
 + 
 +void setup() {
 +  pinMode(red,​ OUTPUT);
 +  pinMode(yellow,​ OUTPUT);
 +  pinMode(green,​ OUTPUT);
 +  pinMode(p_red,​ OUTPUT);
 +  pinMode(p_green,​ OUTPUT);
 +  pinMode(button_1,​ INPUT_PULLUP);​
 +  Serial.begin(9600);​
 +}
 + 
 +void loop() {
 +  // Check button_1
 +  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){
 +    case 0:
 +      change_traffic_lights(0,​0,​1);​
 +      change_pedastrian_lights(1,​0);​
 +      if(flag){
 +        prevTraffic_time = millis();
 +        flag = false;
 +         ​Serial.print("​case 0, state = 5 "​);​Serial.println(flag); ​       ​
 +        state = 5;
 +      }
 +    break;
 +    case 5:
 +      change_traffic_lights(0,​0,​1);​
 +      change_pedastrian_lights(1,​0);​
 +      if(millis() - prevTraffic_time >= 3000){
 +        prevTraffic_time = millis();
 +
 +          Serial.print("​case 5, state = 3 "​);​Serial.println(flag); ​       ​
 +          state = 3;      ​
 +        }
 +    break;
 +    case 1:
 + 
 +      change_traffic_lights(1,​1,​0);​
 +      change_pedastrian_lights(1,​0);​
 +      if(millis() - prevTraffic_time >= 3000){
 +        prevTraffic_time = millis();
 +
 +          Serial.print("​case 1, state = 0 "​);​Serial.println(flag); ​       ​
 +          state = 0;      ​
 +        }
 +    break;
 + 
 +    case 2:
 + 
 +      change_traffic_lights(1,​0,​0);​
 +      change_pedastrian_lights(0,​1);​
 +      if(millis() - prevTraffic_time >= 10000){
 +        prevTraffic_time = millis();
 +
 +          Serial.print("​case 2, state = 1 "​);​Serial.println(flag); ​       ​
 +          state = 1;      ​
 +        }
 +    break;
 + 
 +    case 3:
 +      change_traffic_lights(0,​1,​0);​
 +      change_pedastrian_lights(1,​0);​
 +      if(millis() - prevTraffic_time >= 2000){
 +        prevTraffic_time = millis();
 +
 +          Serial.print("​case 3, state = 2 "​);​Serial.println(flag); ​       ​
 +          state = 2;      ​
 +        }
     break;     break;
     default:     default:
arduino_cpp.txt · Последние изменения: 2019/06/24 20:29 (внешнее изменение)