Робот паук от хлопков
- Войдите на сайт для отправки комментариев
Чт, 09/02/2017 - 07:48
Робот слышит первый хлопок, после вообще не слышит хлопки тупо идет...
#include<Servo.h> // Константы // Servo servo1; Servo servo2; Servo servo3; Servo servo4; Servo servo5; Servo servo6; Servo servo7; Servo servo8; Servo servo9; Servo servo10; Servo servo11; Servo servo12; const int soundPin = 1; // Ножка датчика звука const int ledPin = 0; // Ножка Светодиода // Переменные: unsigned long timeLed; // Время светодиода unsigned long timeNow; // Текущее время unsigned long timeCommand; // Время для комманды int hit = 0 ; // Количество хлопков int sound ; // Предыдущее состояние датчика звука int soundNow ; // Состояние датчика звука void setup() { // Настройка светодиода: pinMode(ledPin, OUTPUT); // настройка датчика звука: pinMode(soundPin, INPUT); // Инициализация начального времени timeLed = timeCommand = millis(); sound = digitalRead(soundPin); servo1.attach(2); //(prav_noga_nizhnii) servo2.attach(3); //(prav_noga_verh) servo3.attach(4);//(lev_noga_niz) servo4.attach(5);//(lev_noga_verh) servo5.attach(6);//(lev_sred_niz) servo6.attach(7);//(lev_sred_vverh) servo7.attach(8);//(prav_sred_noga_nizh) servo8.attach(9);//(prav_sred_noga_verhni) servo9.attach(10);//(prav_zad_noga_niz) servo10.attach(11);//(prav_zad_noga_verh) servo11.attach(12);//(zad_lev_niz) servo12.attach(13);//(zad_lev_verh) } // void setup() // Главный цикл void loop(){ // Считывание времени timeNow = millis(); if (timeNow - timeLed > 1000 ) {digitalWrite(ledPin,!digitalRead(ledPin)); // Мигание светодиода timeLed = timeNow;}; soundNow = digitalRead(soundPin); // Чтение датчика звука if ( sound == 1 and soundNow == 0) // Если был хлопок { hit = hit + 1; // Увеличение кол-ва хлопков timeCommand = timeNow; // Таймер до исполнения команды delay (150); } ; sound = soundNow; if ( (timeNow - timeCommand) > 2000) // Время выполнения команды { switch (hit) { case 1: //Вперёд - 1 хлопок, delay (1000); // движение вперёд - 1 сек break; servo1.write(85); servo2.write(91); servo3.write(95); servo4.write(92); servo5.write(90); servo6.write(87); servo7.write(90); servo8.write(87); servo9.write(95); servo10.write(87); servo11.write(85); servo12.write(92); delay(200); servo2.write(91); delay(200); servo1.write(70); delay(200); servo2.write(111); delay(200); servo4.write(92); delay(200); servo3.write(105); delay(200); servo4.write(72); delay(200); servo6.write(67); delay(200); servo5.write(100); delay(200); servo6.write(87); delay(200); servo8.write(107); delay(200); servo7.write(70); delay(200); servo8.write(87); delay(200); servo10.write(87); delay(200); servo9.write(80); delay(200); servo10.write(67); delay(200); servo12.write(92); delay(200); servo11.write(100); delay(200); servo12.write(112); delay(200); servo1.write(85); servo2.write(91); servo3.write(95); servo4.write(92); servo5.write(90); servo6.write(87); servo7.write(90); servo8.write(87); servo9.write(95); servo10.write(87); servo11.write(85); servo12.write(92); case 2: //Назад - 2 хлопка servo1.write(85); servo2.write(91); servo3.write(95); servo4.write(92); servo5.write(90); servo6.write(87); servo7.write(90); servo8.write(87); servo9.write(95); servo10.write(87); servo11.write(85); servo12.write(92); delay (1000); // движение назад - 1 сек break; case 3: // Влево - 3 хлопка servo2.write(91); delay(200); servo1.write(70); delay(200); servo2.write(111); delay(200); servo4.write(92); delay(200); servo3.write(83); delay(200); servo4.write(72); delay(200); servo6.write(67); delay(200); servo5.write(78); delay(200); servo6.write(87); delay(200); servo8.write(107); delay(200); servo7.write(70); delay(200); servo8.write(87); delay(200); servo10.write(87); delay(200); servo9.write(80); delay(200); servo10.write(67); delay(200); servo12.write(92); delay(200); servo11.write(70); delay(200); servo12.write(112); delay(200); servo1.write(85); servo2.write(91); servo3.write(95); servo4.write(92); servo5.write(90); servo6.write(87); servo7.write(90); servo8.write(87); servo9.write(95); servo10.write(87); servo11.write(85); servo12.write(92); delay (250); // Поворот влево 0,25 сек break; case 4: // Вправо - 4 хлопка servo2.write(91); delay(200); servo1.write(100); delay(200); servo2.write(111); delay(200); servo4.write(92); delay(200); servo3.write(105); delay(200); servo4.write(72); delay(200); servo6.write(67); delay(200); servo5.write(100); delay(200); servo6.write(87); delay(200); servo8.write(107); delay(200); servo7.write(115); delay(200); servo8.write(87); delay(200); servo10.write(87); delay(200); servo9.write(110); delay(200); servo10.write(67); delay(200); servo12.write(92); delay(200); servo11.write(100); delay(200); servo12.write(112); delay(200); servo1.write(85); servo2.write(91); servo3.write(95); servo4.write(92); servo5.write(90); servo6.write(87); servo7.write(90); servo8.write(87); servo9.write(95); servo10.write(87); servo11.write(85); servo12.write(92); delay (250); // Поворот вправо 0,25 сек break; default: // if nothing else matches, do the default // default is optional ;}; /* // Выключение двигателей после окончания движения servo2.write(91); servo3.write(95); servo4.write(92); servo5.write(90); servo6.write(87); servo7.write(90); servo8.write(87); servo9.write(95); servo10.write(87); servo11.write(85); servo12.write(92); if (hit > 0) {delay (1000); hit = 0;}; // Пауза после окончания движения, обнуление числа хлопков */ };// end if ( (timeNow - timeComand) > 2000) } // void loop()
Робот слышит первый хлопок, после вообще не слышит хлопки тупо идет...
Принято к сведению. Когда (и если) у Вас появятся вопросы и/или идеи, обращайтесь. Только не забудьте объяснить, что он, по-Вашему, должен делать.
А роботу посоветуйте вот это.
аа ЗАБЫЛ НА нем уставлен датчик двука и он по хлопкам должен ходить
Вы забыли объяснить подробно как он должен работать, как работает сейчас и в чём собственно Ваш вопрос к сообществу. Пока никаких вопросов от Вас не поступало - только короткие утверждения.
Для начала хоть поясните какое состояние принимает soundPin когда есть хлопок. Из программы этого непонятно вообще.
Да ещё хорошая практика присваивать переменным начальные значения при объявлении. Потому что вы конечно ожидаете, что переменная int имеет значение 0 если ей ещё ничего не присваивали. А вот компилятор может об этом и не догадываться.
А еще модуль движения паука загнать в класс. Тогда просто можно командовать:"Паук иди","Паук стой".
Спасибо ваш ответ мне очень помог я решил!!!!)))