Здесь показаны различия между двумя версиями данной страницы.
arduino_cpp [2018/11/14 13:15] super_admin создано |
arduino_cpp [2019/06/24 20:29] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Программирования на C++ в среде Arduino ====== | ||
- | <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 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 = 2; | ||
- | |||
- | // 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, INPUT_PULLUP); | ||
- | Serial.begin(9600); | ||
- | } | ||
- | |||
- | void loop() { | ||
- | // Check button | ||
- | if(digitalRead(button) == 0) { | ||
- | flag = true; | ||
- | } | ||
- | delay(del); | ||
- | switch(state){ | ||
- | case 0: | ||
- | change_traffic_lights(0,0,1); | ||
- | change_pedastrian_lights(1,0); | ||
- | if(flag){ | ||
- | if((i%30)==0){ | ||
- | flag = false; | ||
- | Serial.print("case 0, state = 3 ");Serial.println(flag); | ||
- | state = 3; | ||
- | i = 1; | ||
- | } | ||
- | } | ||
- | break; | ||
- | |||
- | case 1: | ||
- | |||
- | change_traffic_lights(1,1,0); | ||
- | change_pedastrian_lights(1,0); | ||
- | if((i%30)==0){ | ||
- | Serial.print("case 1, state = 0 ");Serial.println(flag); | ||
- | state = 0; | ||
- | flag = false; | ||
- | i = 1; | ||
- | } | ||
- | break; | ||
- | |||
- | case 2: | ||
- | |||
- | change_traffic_lights(1,0,0); | ||
- | change_pedastrian_lights(0,1); | ||
- | if((i%100)==0){ | ||
- | Serial.print("case 2, state = 1 ");Serial.println(flag); | ||
- | state = 1; | ||
- | flag = false; | ||
- | i = 1; | ||
- | } | ||
- | break; | ||
- | |||
- | case 3: | ||
- | change_traffic_lights(0,1,0); | ||
- | change_pedastrian_lights(1,0); | ||
- | if((i%20)==0){ | ||
- | Serial.print("case 3, state = 2 ");Serial.println(flag); | ||
- | state = 2; | ||
- | flag = false; | ||
- | i = 1; | ||
- | } | ||
- | break; | ||
- | default: | ||
- | break; | ||
- | } | ||
- | i++; | ||
- | |||
- | } | ||
- | </code> |