Помогите с кодом
- Войдите на сайт для отправки комментариев
Пт, 19/02/2016 - 12:38
Всем привет! Нужна помощ! есть робот, он вращает головой, влево и вправо. Вставлены светодиоды в глаза и светодиод сверху головы. Это управляется с ИК пульта
Вот код:
#include <IRremote.h>
#include <IRremoteInt.h>
#include <Servo.h>
Servo servoHEAD; // Объект Servo
int RECV_PIN = 6; //вход ИК приемника
IRrecv irrecv(RECV_PIN);
decode_results results;
int LEDL = 5; //левый глаз
int LEDR = 4; //правый глаз
int LEDH = 7; //голова
void setup()
{
pinMode (LEDR, OUTPUT);
pinMode (LEDL, OUTPUT);
pinMode (LEDH, OUTPUT);
irrecv.enableIRIn(); // включить приемник
servoHEAD.attach(10); // Servo присоединен к 10 выводу
}
void loop() {
if (irrecv.decode(&results))
{
if (results.value == 0xFD00FF) //кнопка 1 поворачивает голову на 45 в право
{
servoHEAD.write(45);
}
if (results.value == 0xFD807F)//кнопка 2 вертит головой
{
servoHEAD.write(45);
delay(500);
servoHEAD.write(90);
delay(500);
servoHEAD.write(135);
delay(500);
servoHEAD.write(90);
}
if (results.value == 0xFD10EF) //кнопка 7 вкл глаза
{
digitalWrite(LEDR, HIGH);
digitalWrite(LEDL, HIGH);
}
if (results.value == 0xFD906F)//кнопка 8 выкл глаза
{
digitalWrite(LEDR, LOW);
digitalWrite(LEDL, LOW);
}
if (results.value == 0xFD50AF)//кнопка 9 цикл глаза
{
digitalWrite(LEDR, HIGH);
delay(400);
digitalWrite(LEDL, HIGH);
delay(400);
digitalWrite(LEDH, HIGH);
delay(400);
digitalWrite(LEDR, LOW);
delay(400);
digitalWrite(LEDL, LOW);
delay(400);
digitalWrite(LEDR, HIGH);
delay(400);
digitalWrite(LEDL, HIGH);
delay(400);
digitalWrite(LEDR, LOW);
delay(400);
digitalWrite(LEDL, LOW);
delay(400);
digitalWrite(LEDR, HIGH);
delay(400);
digitalWrite(LEDL, HIGH);
delay(400);
digitalWrite(LEDR, LOW);
delay(400);
digitalWrite(LEDL, LOW);
delay(400);
digitalWrite(LEDH, LOW);
//тут должна быть какаято команда чтоб цикл начался с начала, пока не нажмётся кнопка отмены
}
irrecv.resume();
}
}
Как сделать чтоб в низу кода когда нажимаю на 9 кнопку они мигали постояноо, пока не нажмётся какая нибудь кнопка отмены мигания? Я извеняюсь если обЬяснил что то не правильно.

Прошу прощения, незнаю как так вышло что создалось 3 темы!
Как-то так:
if (results.value == 0xFD50AF)//кнопка 9 цикл глаза { enableBlink=true; }Эту функцию вызывать из loop
void Blink() { if (enableBlink && millis()-time>=400) { time=millis(); switch (st) { case 0: digitalWrite(LEDR, HIGH); st++; break; case 1: digitalWrite(LEDL, HIGH); st++; break; case 2: digitalWrite(LEDR, LOW); st++; break; case 3: digitalWrite(LEDL, LOW); st=0; break; } } }