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

Говорящая авто сигнализация Ардуино нано

VM Знаток (321), на голосовании 2 месяца назад
Люди добрые помогите пожалуйста со скетчем не могу догнать мелодия играет в хаотичном порядке где должна играть мелодия 1 играет мелодия 3 а где мелодия играет 2

скетч вот

#include <avr/sleep.h>
#include <mp3TF.h>
#include <SoftwareSerial.h>

mp3TF mp3tf = mp3TF();
int buttonPin1 = 7;
int buttonState1 = 0;
const int ledPin = 13;
int count = 0;
unsigned long myTimer1 = 0;
int F1 = 0;
int S1 = 1;

void setup () {

Serial.begin(9600);//установка соединения на скорости 9600
mp3tf.init (&Serial);
Serial.println("start-Siren");
pinMode(ledPin, OUTPUT);
pinMode(buttonPin1, INPUT);
digitalWrite(4, HIGH); // высокий сигнал на D4delay (5000);
myTimer1 = millis();
}
void loop (){
buttonState1 = digitalRead(buttonPin1);
if(buttonState1 == HIGH){
F1 = 1;
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(ledPin, LOW);
}
if (F1 == 1 && S1 == 1){
myTimer1 = millis();
S1 = 0;
}
if (millis() - myTimer1 >= 1000){
F1 = 0;
S1 = 1;
if (count == 1){
mp3tf.play (1);
delay (3000);
}
if (count == 2){
mp3tf.play (2);
delay (3000);
}
if (count >= 3){
mp3tf.play (3);
delay (3000);
}
count = 0;
}
else{
if (buttonState1 == HIGH){
count = count + 1;
delay (80);
}
}
}
Голосование за лучший ответ
Nikassaiop End Просветленный (43386) 3 месяца назад
Ну так и чего ты думаешь?* Мелодии просто в скетче местами поменяй)
VMЗнаток (321) 3 месяца назад
менял все хаотично
VM Знаток (321) VM, в корне флешки менял и ве роно тоже самое
VMЗнаток (321) 3 месяца назад
Мелодии просто в скетче местами поменяй. пример моно?
VMЗнаток (321) 3 месяца назад
Ну так и чего ты думаешь?* что нормальные адекватные люди ткнут носом в правильное направление а не будут стебаться и утрировать
kaiu Высший разум (119618) 3 месяца назад
Понять не смог, а после // описал попытку
 #include <avr/sleep.h>  
#include <mp3TF.h>
#include <SoftwareSerial.h>

mp3TF mp3tf = mp3TF();
int buttonPin1 = 7;
int buttonState1 = 0;
const int ledPin = 13;
int count = 0;
unsigned long myTimer1 = 0;
int F1 = 0;
int S1 = 1;

void setup () {
Serial.begin(9600);//установка соединения на скорости 9600
mp3tf.init (&Serial);
Serial.println("start-Siren");
pinMode(ledPin, OUTPUT);
pinMode(buttonPin1, INPUT);
digitalWrite(4, HIGH); // высокий сигнал на D4delay (5000);
myTimer1 = millis();
}


void loop (){
buttonState1 = digitalRead(buttonPin1);

if(buttonState1 == HIGH){ // пускай это HIGH тогда F1 = 1 S1 = 1
F1 = 1;
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(ledPin, LOW);
}

if (F1 == 1 && S1 == 1){
myTimer1 = millis(); // получим начальное время
S1 = 0; // тогда F1 = 1 S1 = 0
}

// пока это условие не достигло так как 1 сек не прошло
if (millis() - myTimer1 >= 1000){
F1 = 0;
S1 = 1;
if (count == 1){
mp3tf.play (1);
delay (3000);
}

if (count == 2){
mp3tf.play (2);
delay (3000);
}

if (count >= 3){
mp3tf.play (3);
delay (3000);
}
count = 0;
}
else{ // тогда зашли сюда
if (buttonState1 == HIGH){ // и так как выше принял «пускай это HIGH»
count = count + 1; // а тут оно всю 1 секунду будет +1?
delay (80); // при паузе 80, это то count достигнет 12 и зачем?
}
}
}
VMЗнаток (321) 3 месяца назад
так проблема нашлась?
kaiu Высший разум (119618) VM, проблема понять, а делать надо по шагам, от простого, до сложного. Если есть 3 мелодии, то просто задать числа N которое менять от 1 до 3 и если больше, то изменить на 1....но тут снова, надо понимать, что должна делать программа, а пока вы это не написали. Вот написали бы, вот такая-то программа, должна работать так-то, а работает вот так-то
VMЗнаток (321) 3 месяца назад
простите меня я в этой сфере новичок уже мозг кипит .вроде понятно но не чего не понятно
kaiu Высший разум (119618) VM, я просто си знаю, я эту штуку..точнее подобную, мало что делал. Вот только на днях разве что реле времени, выдержка по включению и выключению. Один резистор 1 кОм на базу кт817а и реле на 5 ампер от старого монитора, параллельно реле еще диод...вроде все. Не, конечно еще розетка есть, чтобы переключать нагрузку 230 вольт и не более ватт так 600.
Похожие вопросы