5 кнопок - 4 сервы
- Войдите на сайт для отправки комментариев
Чт, 06/04/2017 - 01:14
Приветствую. Прошу помощи в написании кода.
Задача: 5 кнопок.
Первая поворачивает серву1 на 180 и на 0.
Вторая серву2 на 0.
Третья серву2 на 180, серву3 на 0, серву4 на 180.
Четвертая серву3 на 180.
Пятая серву4 на 0 и 180.
Строго прошу не судить , т.к. только начал общаться с Ардуино.
Нахватался там-сям.
Это читал: http://arduino.ru/forum/obshchii/prezhde-chem-sprosit-pro-servomashinku-...
http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-no.... не помогло, а может плохо читал.
Вот собственно начало. Дальше первой кнопки не прошел.
#include <Servo.h> Servo servos[55]; void servo_move( int pin, int a, int t ) { int d, cnt, ca; ca = servos[pin].read(); d = ca - a; cnt = abs(d); for ( int i = 0; i < cnt; i++ ) { servos[pin].write(ca); if ( d < 0 ) ca++; else ca--; delay(t); } } int button1 = 2; //серво1 0,180 int flag1 = 0; int button2 = 3; //серво2 0 int flag2 = 0; int button3 = 4; //серво2 180 //серво3 0 //серво4 180 int flag3 = 0; int button4 = 5; //серво3 180 int flag4 = 0; int button5 = 6; //серво4 0,180 int flag5 = 0; void setup() { pinMode(button1, INPUT); pinMode(button2, INPUT); pinMode(button3, INPUT); pinMode(button4, INPUT); pinMode(button5, INPUT); } void loop() { if (digitalRead(button1) == HIGH && flag1 == 0) { servos[33].attach(33); servo_move( 33, 180, 10); delay(100); servos[34].attach(34); servo_move( 34, 180, 10); delay(100); flag1 = 1; } if (digitalRead(button1) == LOW && flag1 == 1) { flag1 = 2; } if (digitalRead(button1) == HIGH && flag1 == 2) { servos[33].attach(33); servo_move( 33, 0, 10); delay(100); servos[34].attach(34); servo_move( 34, 0, 10); delay(100); flag1 = 3; } if (digitalRead(button1) == LOW && flag1 == 3) { flag1 = 0; } if (digitalRead(button2) == HIGH && flag2 == 0) { servos[35].attach(35); servo_move( 35, 180, 10); delay(500); flag2 = 1; if (digitalRead(button2) == LOW && flag2 == 1) { flag2 = 0; } } }
Если Вам необходимо работать больше, чем с одним устройством, нужно избавляться от delay.
Найдите и разберитесь с blink without delay.