Ви не увійшли.
Аналоговые порты не срабатывают после загрузки кода в arduino uno.
В режиме симулятора Makeblock, отлавливаю аналоговые входы, вижу их циферное значение, и условия в программе срабатывают, заставляя светодиоды на цифровых выходах загораться.
Но если код загрузить в ардуину, то аналоговые порты словно не читают значение.
Подскажите, кто знает, почему?
Спасибо.
Еще появились вопросы по различиям в коде.
на разных ресурсах, по разному пишут считывание с аналогового порта:
1.
int sensePin = 0;
int val = analogRead(sensePin); - тоесть вход как простая цифра "0".
2.
int val = analogRead(A0);
3.
int val = analogRead(A0+0);
Вобще не понятно, почему так разнятся одни и те же строки. Некоторые даже указывают через A14, A15 .
Возможно это не имеет значения, но запрограммированная ардуинка почему-то не заработала.
Остання редакція Jester (2021-09-07 19:46:10)
Неактивний
Точно не читают значения? Померяйте мультиметром напряжение на аналоговых портах. Выведите в сериал значения, которые с них считываются (ведь с них в любом случае что-то считывается).
Неактивний
"на разных ресурсах, по разному пишут считывание с аналогового порта:" а ссылки на эти ресурсы секретные? Что-то мне подсказывает , что понадобится и полный скетч, загруженный автором в ардуинку(скетча из примеров у автора нет и он берет скетчи из сторонних ресурсов)
Заработало!!!!
void loop() {
int aa = analogRead(A2);
delay(1);
// volts = aa/200;
if(aa > 20){
digitalWrite(6,1);
digitalWrite(10,0);
}
if(aa < 12){
digitalWrite(6,0);
digitalWrite(10,1);
}
}
Как видим, при значении "аа" большем 20, программа почувствовала вход через делитель напряжения от батарейки.
Но это я подобрал значение в программе СКЕТЧ.
Короче куплю ЖК и буду видеть реальность)))
А до этого, я писал код в программе MakeBlock, и там значение от этой же батарейки было в 200 раз больше(примерно).
Но в этой МЕЙКБЛОК я тестировал Ардуину в ЖИВОМ режиме , тоесть ОНЛАЙН по ЮСБ получая значения с аналога на экран программы.
Возможно в живом режиме и в режиме прошитом Ардуина по разному понимает уровень входного сигнала (хотя я пока не уверен).
Ну в общем проблему решил )))).
Всем спасибо за поддержку.
Поставлю ЖК и буду видеть реалии.
Неактивний
Поставлю ЖК и буду видеть реалии.
Наивный чукотский вьюноша
В детстве все через это проходят.
Все заработало.
Вижу реальные цифры, спокойно установил нужный мне порог.
Схема пашет и здоровается при запуске )))
#include <iarduino_OLED_txt.h> // Подключаем библиотеку iarduino_OLED_txt.
iarduino_OLED_txt myOLED(0x78); // Объявляем объект myOLED, указывая адрес дисплея на шине I2C: 0x78 (если учитывать бит RW=0).
//
extern uint8_t MediumFontRus[]; // Подключаем шрифт SmallFontRus.
float volts = 0.0;
void setup(){
pinMode(6,OUTPUT); //контакты цыфровые активировать как ВЫХОДЫ
pinMode(10,OUTPUT); //контакты цыфровые активировать как ВЫХОДЫ
pinMode(A2,INPUT); // Аналоговый вход активировать на вход
myOLED.begin(); // Инициируем работу с дисплеем.
myOLED.setFont(MediumFontRus); // Указываем шрифт который требуется использовать для вывода цифр и текста.
// myOLED.setCoding(TXT_UTF8); // Указываем кодировку текста в скетче. Если на дисплее не отображается Русский алфавит, то ...
myOLED.clrScr();
myOLED.print( "Привет." , OLED_C, 1);
myOLED.print( "чувак" , OLED_C, 3);
myOLED.print( "V[26-28]" , 0, 6);
delay(3000);
digitalWrite(6,1);
digitalWrite(10,0);
delay(300);
digitalWrite(6,0);
digitalWrite(10,1);
delay(300);
} // раскомментируйте функцию setCoding и замените параметр TXT_UTF8, на TXT_CP866 или TXT_WIN1251.
//
void loop(){ //
myOLED.clrScr(); // Чистим экран.
myOLED.print( "V[26-28]" , 0, 1);
int aa = analogRead(A2);
volts = aa*0.0354;
if(aa > 846){
digitalWrite(6,1); // на 6 выход- ЗЕЛ диод без резистора
digitalWrite(10,0); // на 10 выход - БЕЛ диод, с резистором
}
if(aa < 800){
digitalWrite(6,0);
digitalWrite(10,1);
}
myOLED.print( "aa=" , 0, 3); myOLED.print( aa , 40, 3);
myOLED.print( "V=" , 0, 5); myOLED.print( volts , 40, 5);
delay(1000); // Ждём 3 секунды.
}
Остання редакція Jester (2021-09-09 17:33:40)
Неактивний