не подскажете как осуществить такое? при включении габаритов ардуино понимала, что на пин пришло напряжение и включала соответствующую картинку. с картинками и экраном я разобрался, а вот как прописать что б ардуино поняла, что на пине ток не понятно.
прописать - никак. Там будет ноль ВСЕГДА. Ставится датчик тока: инвазивным методом - шунт, не инвазивным методом - на основе датчика холла.
1. Никогда НЕ подключаем пины Ардуины куда-либо БЕЗ ОГРАНИЧИТЕЛЬНОГО РЕЗИСТОРА, хотя бы 100 ом. 2. Правильно задавайте вопросы. "НА" пине - может быть напряжение (потенциал относительно GND). Ток - может быть "ЧЕРЕЗ" пин. 3. Вам нужно Это : - ? Код (C++): #define Gabarit 7 void Setup() { pinMode (Gabarit, INPUT); ... } void Loop() { int Svet = digitalRead(Gabarit); if Svet == 0 {...} else {...} ... Естественно, вольтметр на схеме только для наглядности. В реале его как раз Ардуина и заменяет. Вам нужны лишь Ардуина и два резистора. Резистор R2 возьмите - 2 ком. Так как бортовая сеть плавает до 15 вольт..
Код (C++): #include <SoftwareSerial.h> // Подключаем библиотеку SoftwareSerial для работы с программным UART const uint8_t pinRX = 0; // Определяем константу хранящую номер вывода Arduino RX программного UART, подключается к выводу TX дисплея const uint8_t pinTX = 1; // Определяем константу хранящую номер вывода Arduino TX программного UART, подключается к выводу RX дисплея const uint8_t pinVD1 = 7; // Определяем константу хранящую номер вывода Arduino к которому подключён первый светодиод const uint8_t pinVD2 = 6; // Определяем константу хранящую номер вывода Arduino к которому подключён второй светодиод const uint8_t pinR = A2; // Определяем константу хранящую номер вывода Arduino к которому подключён потенциометр SoftwareSerial softSerial(pinRX,pinTX); // Объявляем объект softSerial с указанием выводов RX и TX по которым общаемся с дисплеем // void setup(){ // // Подготовка: // softSerial.begin(9600); // Инициируем передачу данных по программному UART на скорости 9600 бит/сек pinMode(pinVD1, OUTPUT); // Конфигурируем вывод pinVD1 как выход pinMode(pinVD2, OUTPUT); // Конфигурируем вывод pinVD2 как выход // Устанавливаем состояние первого светодиода: // softSerial.print((String) "print h0.val"+char(255)+char(255)+char(255)); // Отправляем команду дисплею: print h0.val заканчивая её тремя байтами 0xFF while(!softSerial.available()){} // Ждём ответа. Дисплей должен вернуть состояние слайдера h0, отправив 4 байта данных analogWrite(pinVD1, softSerial.read()); delay(10); // Устанавливаем на выводе pinVD1 сигнал ШИМ с коэффициентом заполнения равным значению первого принятого байта ответа дисплея while(softSerial.available()){softSerial.read(); delay(10);} // Читаем остальные 3 байта ответа ничего с ними не делая, так как установленный диапазон значений слайдера от 0 до 255 уместился в первом байте данных // Устанавливаем состояние второго светодиода: // softSerial.print((String) "print bt0.val"+char(255)+char(255)+char(255)); // Отправляем команду дисплею: «print bt0.val» заканчивая её тремя байтами 0xFF while(!softSerial.available()){} // Ждём ответа. Дисплей должен вернуть состояние кнопки bt0, отправив 4 байта данных, где 1 байт равен 0x01 или 0x00, а остальные 3 равны 0x00 digitalWrite(pinVD2, softSerial.read()); delay(10); // Устанавливаем на выводе pinVD2 состояние в соответствии с первым принятым байтом ответа дисплея while(softSerial.available()){softSerial.read(); delay(10);} // Читаем остальные 3 байта ответа ничего с ними не делая, так как состояние кнопки было передано в первом байте } // // void loop(){ // if(softSerial.available()>0){ // Если есть данные принятые от дисплея, то ... String str; // Объявляем строку для получения этих данных while(softSerial.available()){str+=char(softSerial.read()); delay(10);} // Читаем принятые от дисплея данные побайтно в строку str for(int i=0; i<str.length(); i++){ // Проходимся по каждому символу строки str if(memcmp(&str[i],"h0" ,2)==0){i+=5; analogWrite (pinVD1, str[i-3]);}else // Если в строке str начиная с символа i находится текст "h0", значит после него следует 4 символа (байта) данных слайдера, первый из который следует указать как ШИМ для вывода pinVD1 if(memcmp(&str[i],"ON" ,2)==0){i+=1; digitalWrite(pinVD2, HIGH); }else // Если в строке str начиная с символа i находится текст "ON", значит кнопка дисплея была включена, устанавливаем высокий уровень на выводе pinVD2 if(memcmp(&str[i],"OFF",3)==0){i+=2; digitalWrite(pinVD2, LOW); } // Если в строке str начиная с символа i находится текст "OFF", значит кнопка дисплея была выключена, устанавливаем низкий уровень на выводе pinVD2 } // } // if(millis()%500<=5){delay(5); // Следующее действие выполняем каждые пол секунды softSerial.print((String)"t0.txt=\""+analogRead(pinR)+"\""+char(255)+char(255)+char(255)); // Отправляем команду дисплею: «t0.txt="текст"» заканчивая её тремя байтами 0xFF. Эта команда устанавливает значение для текстового поля t0 } // В качестве текста передаётся значение в аналогового входа pinR считанное функцией analogRead } и снова здравствуйте, многоуважаемые знатоки!!! перестала работать связка ардуино и экран нэкшен.
хочу сделать управление rgb лентой, часы с будильником и температура, но не могу понять что со связью между ардуино и экраном
помогите написать код. 1 на экране слайдер меняет яркость диода подключенного к ардуино 2 изменить текстовое поле на экране с ардуино
Код (C++): #include <SoftwareSerial.h> #include <Nextion.h> SoftwareSerial nextion(2, 3); Nextion myNextion(nextion, 9600); int potPin = 0; void setup() { Serial.begin(9600); myNextion.init(); } void loop() { int val = map(analogRead(potPin),0,1023,0,6000); int mal = map(analogRead(potPin),0,1023,0,180); Serial.println(val); Serial.println(mal); float h = val; float t = mal; //myNextion.setComponentText("t3", String(t)); delay(5); myNextion.setComponentText("t15", String(h)); myNextion.setComponentValue("n0",h); myNextion.setComponentValue("z0",t); delay(5); } этот код некогда был рабочим, но щас он не работает