Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование ардуино. Код программы.

aleksandr tykov Ученик (107), открыт 3 дня назад
Код нашел на одну серву, добавил вторую, первая отказалась работать, работает только 2,может кто знает что ни так сделано.

#include <Servo.h>

const int BUTTON_PIN = 7;
const int SERVO_PIN = 9;
const int BUTTON1_PIN = 5;
const int SERVO1_PIN = 10;
Servo servo;
Servo servo1;
int angle = 0;
int lastButtonState;
int currentButtonState;
int lastButton1State;
int currentButton1State;
void setup() {
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
servo.attach(SERVO_PIN);
Serial.begin(9600);
pinMode(BUTTON1_PIN, INPUT_PULLUP);
servo.attach(SERVO1_PIN);
servo.write(angle);
currentButtonState = digitalRead(BUTTON_PIN);
currentButton1State = digitalRead(BUTTON1_PIN);
}

void loop() {

lastButtonState = currentButtonState;
currentButtonState = digitalRead(BUTTON_PIN);
lastButton1State = currentButton1State;
currentButton1State = digitalRead(BUTTON1_PIN);
if(lastButtonState == HIGH && currentButtonState == LOW) {
Serial.println("The button is pressed");


if(angle == 0)
angle = 90;
else
if(angle == 90)
angle = 0;


servo.write(angle);
}
if (lastButton1State == HIGH && currentButton1State == LOW) {
Serial.println("The button is pressed");


if(angle == 0)
angle = 90;
else
if(angle == 90)
angle = 0;


servo.write(angle);
}
}
3 ответа
Профессор Оракул (91155) 3 дня назад
В setup() в конце нужно добавить строки:
servo.attach(SERVO_PIN);
servo1.attach(SERVO1_PIN);
servo1.write(angle);

В loop() в конце добавить строку:
servo1.write(angle);
Александр ТюковУченик (101) 3 дня назад
Спасибо, попробую.
Александр ТюковУченик (101) 3 дня назад
Не получается и от7 и от5 пина работает серва на 9 пине, а на 10 молчит.
Александр ТюковУченик (101) 3 дня назад
Ещё раз спасибо большое, нашёл ошибку все заработало.
Иван Сигаев Искусственный Интеллект (154022) 3 дня назад
Что мешает использовать массивы?
 #include <Servo.h>  

const int BUTTON_PIN[2] = {7,5};
const int SERVO_PIN[2] = {9,10};
Servo servo[2];
int angle[2] = {0,0};
int lastButtonState[2];
int currentButtonState[2];
void setup() {
Serial.begin(9600);
for(int i=0;i<2;i++){
pinMode(BUTTON_PIN[i], INPUT_PULLUP);
servo[i].attach(SERVO_PIN[i]);
servo[i].write(angle[i]);
currentButtonState[i] = digitalRead(BUTTON_PIN[i]);
}

}

void loop() {

for(int i=0;i<2;i++){
lastButtonState[i] = currentButtonState[i];
currentButtonState[i] = digitalRead(BUTTON_PIN[i]);
if(lastButtonState[i] == HIGH && currentButtonState[i] == LOW) {
Serial.println("The button "+i+" is pressed");
if(angle[i] == 0)
angle[i] = 90;
else
if(angle[i] == 90)
angle[i] = 0;
servo[i].write(angle[i]);
}
}
}
Александр ТюковУченик (101) 3 дня назад
Я не программист, в коде выдаёт ошибку
exit status 1

Compilation error: invalid operands of types 'const char*' and 'const char [12]' to binary 'operator+'
Александр Тюков Ученик (101) Александр Тюков, требуется чтобы с 5 пина работала одна серва, а с 7 другая
Александр ТюковУченик (101) 3 дня назад
Заработало, только пришлось убрать из строки"+i+" ("The button "+i+" is pressed")
Иван Сигаев Искусственный Интеллект (154022) Давно под ардуинку не программировал, забыл, что там чуть по другому вывод устроен
 Serial.print("The button ");
Serial.print(i);
Serial.println(" is pressed");  
Александр Тюков Ученик (101) 2 дня назад
Благодарю, оба кода рабочие. Теперь мой кораблик, будет работать потише. Использовал, ардуино нано, 2 сервы rds3115mg, понижайику на 5в, ну и два бункера. Дома все ок, осталось на воде испытать.
Похожие вопросы