Автоматический счётчик
- Войдите на сайт для отправки комментариев
Доброго времени суток Уважаемые форумчане ! В общем нужно сделать счетчик импульсов - с задачей справился, считает и выводит на экран. при включении проигрывается мелодия, всё хорошо! Но хотелось бы чтоб при включении - сначала был текст (что то типа приветствия)- допустим около 3 секунд, а потом запускалась сама основная программа. неделю уже пытаюсь сообразить - но что то никак не выходит ! а сам счётчик работает - счетчик импульсов, так же ардуино управляет шаговым двигателем через драйвер TB6600. кнопки на 8 и 9 пине - старт и стоп. прошу сильно не ругаться ) - код собирал из 2 разных. так что может где то косяки есть( Подскажите пожалуйста как мне реализовать мою *хотелку* ? код прилагаю:
#include "pitches.h" // заголовочный файл с названиями нот и значениями частот #include <Wire.h> #include <LCD_1602_RUS.h> #define sentido_horario digitalWrite(5, HIGH); // define comando para sentido horário #define sentido_antihorario digitalWrite(5, LOW); // define comando para sentido anti-horário #define habilita_motor digitalWrite(7, LOW); // define comando para habilitar motor #define inibe_motor digitalWrite(7, HIGH); // define comando para desligar motor #define SPEAKER 11 // вывод для подключения динамика // массив нот int notes[] = { NOTE_A4, NOTE_E3, NOTE_A4, 0, NOTE_A4, NOTE_E3, NOTE_A4, 0, NOTE_E4, NOTE_D4, NOTE_C4, NOTE_B4, NOTE_A4, NOTE_B4, NOTE_C4, NOTE_D4, NOTE_E4, NOTE_E3, NOTE_A4, 0 }; // массив длительностей звучания нот (в мс) int times[] = { 250, 250, 250, 250, 250, 250, 250, 250, 125, 125, 150, 125, 125, 125, 150, 125, 250, 250, 250, 250 }; int velocidade = 100; // Variável que informa a velocidade do motor // 0 = motor parado e 1024 = velocidade máxima; int habilita = 0; //Variável que guarda o resultado dos comando dos botões de liga e desliga // Se 0 = Para Motor // Se 1 = Roda o Motor int sentido = 1; // Variável que informa o sentido de giro do motor // se 1 = Sentido Horário // Se 2 = Sentido anti-horário int modo_de_operacao = 0; // Variável que guarda a combinação dos botões para o programa saber o que fazer // Essa variável pode ter 3 valores // 0 -> desliga motor // 1 -> Liga o Motor no Sentido Horário // 2 -> Liga o Motor no sentido Anti-horário #include <Wire.h> #include <LCD_1602_RUS.h> LCD_1602_RUS lcd(0x27, 16, 2); long x; long y; long z; void setup() { for (int i = 0; i < 20; i++) { tone(SPEAKER, notes[i], times[i]); delay(times[i]); } Serial.begin(9600); lcd.init(); lcd.backlight(); x = 0; y = 0; z = 0; pinMode(2, INPUT); lcd.setCursor(0, 0); lcd.print("Этикеток:"); lcd.backlight(); pinMode(5, OUTPUT); pinMode(6, OUTPUT); // Configura pinos 5, 6 e 7 como saídas digitais pinMode(7, OUTPUT); } void loop() { if (digitalRead(8) == 1) // Verifica se o botão liga (primeiro botão) foi pressionado habilita = 1; // Se sim altera a variável habilita para 1 = Liga motor if ( digitalRead(9) == 1) // Verifica se o botão desliga (segundo botão) foi pressionado habilita = 0; // Se sim altera a variável habilita para 0 = Desliga motor modo_de_operacao = sentido * habilita; // Neste ponto cruzamos as informações das chaves // e geramos 3 possíveis combinações: // 2 x 1 = 2 \ // 1 x 1 = 1 \ Os resultados podem ser // 1 x 0 = 0 / 0, ou 2 // 2 x 0 = 0 / { x = digitalRead(2); if (x == 0) { y = 1; } if (y == 1) { y = 1; if (x == 1) { y = 0; z = z + 1; Serial.println(z); lcd.setCursor(10, 0); lcd.print(z); } switch (modo_de_operacao) //Verifica o valor da variável modo_de_operacao { case 0: // Se for 0 inibe_motor // Para o motor digitalWrite(6, LOW); // Para de enviar pulsos para o Driver break; case 1: // Se for 1 habilita_motor // Liga o motor sentido_horario // Liga o sentido horário velocidade = analogRead(A0); // Lê o valor do potenciômetro tone(6, velocidade); // Envia o valor do potenciômetro em forma de frequencia para o driver break; case 2: // Se for 2 habilita_motor // Liga o motor sentido_antihorario // Liga o sentido anti-horário velocidade = analogRead(A0); // Lê o valor do potenciômetro tone(6, velocidade); // Envia o valor do potenciômetro em forma de frequencia para o driver break; } } } }
Может в сетап после вывода приветствия поставить delay(3000)?
сделал - но не то что хотелось бы! получается - включаем девайс - сначала играет мелодия - потом мигает подсветка экрана - выводится текст приветствия и через 4 секунды начинается выполнение основной программы ! можете помочь ? что исправить чтоб приветствие отображалось когда играет мелодия? код прилагаю :
дел
сделал - но не то что хотелось бы! получается - включаем девайс - сначала играет мелодия - потом мигает подсветка экрана - выводится текст приветствия и через 4 секунды начинается выполнение основной программы ! можете помочь ? что исправить чтоб приветствие отображалось когда играет мелодия?
где тут "мигает подсветка" - в приложенном коде не нашел.
Если вам надо. чтобы во время мелодии приветсвие уже было на экране - так поменяйте их местами. сначала зажигайте экран, а потом запускайте мелодию