Вечер всем добрый. Подскажите как описать в скетче управление скоростью мигания диода при помощи ползунка в приложении андроид. С модулем hc-05 соединился, АТ командами все настроил. Пока есть вот так. Два диода управляются двумя переменными резисторами по скорости, каждый отдельно. И HC-05 настроенный. А вот как с телефона это сделать пока не пойму. попытки есть, но как-то не удачно. Опыт использования 4 дня. Код (C++): #include <SoftwareSerial.h> SoftwareSerial mySerial (2,3); #include <Thread.h> // подключение библиотеки ArduinoThread const int ledPin = 13; // переменная с номером пина светодиода const int ledPin1 = 12; int sensorPin = A0; int sensorPin1 = A1; int sensorValue = 0; int sensorValue1 = 0; Thread ledThread = Thread(); // создаём поток управления светодиодом Thread led1Thread = Thread(); void setup() { pinMode(2,INPUT); pinMode(3,OUTPUT); Serial.begin(9600); mySerial.begin(9600); pinMode(ledPin, OUTPUT); // объявляем пин 13 как выход. pinMode(ledPin1, OUTPUT); ledThread.onRun(ledBlink); // назначаем потоку задачу led1Thread.onRun(led1Blink); // назначаем потоку задачу } void loop() { if (mySerial.available()) { char c = mySerial.read(); // читаем из software-порта Serial.print(c); // пишем в hardware-порт } if (Serial.available()) { char c = Serial.read(); // читаем из hardware-порта mySerial.write(c); // пишем в software-порт } led1Thread.setInterval(sensorValue1); // задаём интервал срабатывания, мсек ledThread.setInterval(sensorValue); // задаём интервал срабатывания, мсек sensorValue = analogRead(sensorPin); sensorValue1 = analogRead(sensorPin1); // Проверим, пришло ли время переключиться светодиоду: if (ledThread.shouldRun()) ledThread.run(); // запускаем поток if (led1Thread.shouldRun()) led1Thread.run(); // запускаем поток } // Поток светодиода: void ledBlink() { static bool ledStatus = false; // состояние светодиода Вкл/Выкл ledStatus = !ledStatus; // инвертируем состояние digitalWrite(ledPin, ledStatus); // включаем/выключаем светодиод } void led1Blink() { static bool led1Status = false; // состояние светодиода Вкл/Выкл led1Status = !led1Status; // инвертируем состояние digitalWrite(ledPin1, led1Status); // включаем/выключаем светодиод }
Необходимо сделать следующие шаги: 1 - соединить уарт ардуино с уартом модуля крест на крест 2 - загрузить самую простую программу сериал - на прием и передачу 3 - в телефоне скачать программу монитор сериал - соединиться с блютус модулем и послать команду - в ардуиновском терминале смотреть что происходит
В этом блоке читаем то что пришло - если буфер не пустой if(Serial.available()){ char c = Serial.read(); // читаем из hardware-порта mySerial.write(c); а потом нужно если значение переменной c допустим равно с == '6' то выполнить то то через if else или switch или присвоить полученное значение делаю или миллис - чем ты там управляешь скоростью светодиода
Вот сюда надо вписать. ledThread.setInterval(?); // задаём интервал срабатывания, мсек Что только не вписывал, не получается.
Код (C++): int val; #include <SoftwareSerial.h> SoftwareSerial mySerial (2,3); #include <Thread.h> // подключение библиотеки ArduinoThread const int ledPin = 11; // переменная с номером пина светодиода Thread ledThread = Thread(); // создаём поток управления светодиодом void setup() { //управление Serial.setTimeout(4); //bluetooth pinMode(2,INPUT); pinMode(3,OUTPUT); Serial.begin(9600); mySerial.begin(9600); pinMode(ledPin, OUTPUT); // объявляем пин 13 как выход. ledThread.onRun(ledBlink); // назначаем потоку задачу } void loop() { if (mySerial.available()>0) { val = mySerial.parseInt(); } ledThread.setInterval(val); // задаём интервал срабатывания, мсек //sensorValue = analogRead(sensorPin); //sensorValue1 = analogRead(sensorPin1); // Проверим, пришло ли время переключиться светодиоду: if (ledThread.shouldRun()) ledThread.run(); // запускаем поток } // Поток светодиода: void ledBlink() { static bool ledStatus = false; // состояние светодиода Вкл/Выкл ledStatus = !ledStatus; // инвертируем состояние digitalWrite(ledPin, ledStatus); // включаем/выключаем светодиод }