Узнать состояние пина
- Войдите на сайт для отправки комментариев
Чт, 05/07/2018 - 10:37
Была тема на форуме, но ничем не закончилась особо. Вопрос такой у меня 9 пинов на выход работают. Надо узнавать их статус для того чтобы выводить в виде индикации через сдвиг. регистры на панель. Да могу применять перменные дополнительные т.е. в них записывать например 1 и потом эти переменные читать и с них уже делать вывод о том в каком состоянии пин. Но мне надо оптимизацию делать. Не хочу использовать лишние переменные. Когда со входными портами там все просто digitalRead, а если пины настроены на выход то как читать их состояние программно без переменных? заранее спасибо за ответы.
точно также: digitalRead
Ок попробую. Ну где то читал что не пашет эта функция всегда выводит 1 вроде. Но я попробую
где то читал что не пашет эта функция всегда выводит 1 вроде.
Плюньте и разотрите. А потом спокойно используйте digitalRead - всё нормально работает.
Не пашет(( я забыл сказат ьчто у меня не цифровые пины а аналоговые( Т.е. переодически они работают на выход и надо узновать когда именно это происходит. без лишних переменных. Какие есть варианты?
не цифровые пины а аналоговые( Т.е. переодически они работают на выход и надо узновать когда именно это происходит. без лишних переменных. Какие есть варианты?
Вариант Вам уже сказали. Он работает у всех, кроме Вас.
Что такое "аналоговые пины работают на выход" знаете тролько Вы. Когда аналоговые пины (кроме 6 и 7 у Нано) работают на выход (pinMode(x, OUTPUT); digitalWrite(x, ...), они ничем (по буквам "н и ч е м" не отличаются от цифровых.
Если Вы объясните толком что у Вас там за пины и куда они работают, а заодно приведёте скетч, разговор станет более предметным.
Ок коротко по сути: Камень мена2560, девять пинов аналоговых работают как порты вывода т.е. к ним подключены оптроны и мега как бы выводит так дискретное управление на 9 ног. Так вот вот вывожу я на них напряжение т.е. analogWrite(OUTPORT_1,255);
Но эт опроисходит в специфической функции (не суть). Так вот а в паралель этому всему работает функция вывода индикации через сдвиговые регистры их 3 штуки. Вывод происходит так:
//Функция вывода индикации void FNC_DISPLAY(){ if (OUT_1==1){IND3 |= (1 << 3);} else {IND3 &= ~(1 << 3);} if (OUT_2==1){IND3 |= (1 << 1);} else {IND3 &= ~(1 << 1);} if (OUT_3==1){IND2 |= (1 << 7);} else {IND2 &= ~(1 << 7);} if (OUT_4==1){IND2 |= (1 << 5);} else {IND2 &= ~(1 << 5);} if (OUT_5==1){IND2 |= (1 << 3);} else {IND2 &= ~(1 << 3);} if (OUT_6==1){IND2 |= (1 << 1);} else {IND2 &= ~(1 << 1);} if (OUT_7==1){IND1 |= (1 << 7);} else {IND1 &= ~(1 << 7);} if (OUT_8==1){IND1 |= (1 << 5);} else {IND1 &= ~(1 << 5);} if (OUT_9==1){IND1 |= (1 << 3);} else {IND1 &= ~(1 << 3);} if (digitalRead(INTPORT_1)==0){IND3 |= (1 << 2);} else {IND3 &= ~(1 << 2);} if (digitalRead(INTPORT_2)==0){IND3 |= (1 << 0);} else {IND3 &= ~(1 << 0);} if (digitalRead(INTPORT_3)==0){IND2 |= (1 << 6);} else {IND2 &= ~(1 << 6);} if (digitalRead(INTPORT_4)==0){IND2 |= (1 << 4);} else {IND2 &= ~(1 << 4);} if (digitalRead(INTPORT_5)==0){IND2 |= (1 << 2);} else {IND2 &= ~(1 << 2);} if (digitalRead(INTPORT_6)==0){IND2 |= (1 << 0);} else {IND2 &= ~(1 << 0);} if (digitalRead(INTPORT_7)==0){IND1 |= (1 << 6);} else {IND1 &= ~(1 << 6);} if (digitalRead(INTPORT_8)==0){IND1 |= (1 << 4);} else {IND1 &= ~(1 << 4);} if (digitalRead(INTPORT_9)==0){IND1 |= (1 << 2);} else {IND1 &= ~(1 << 2);} //if (Rel_1==1){IND1 |= (1 << 1);} else {IND1 &= ~(1 << 1);} if (digitalRead(RELAY_2)==1){IND1 |= (1 << 0);} else {IND1 &= ~(1 << 0);} digitalWrite(IND_ST_CP, LOW); shiftOut(IND_DS, IND_SH_CP, MSBFIRST, IND1); shiftOut(IND_DS, IND_SH_CP, MSBFIRST, IND2); shiftOut(IND_DS, IND_SH_CP, MSBFIRST, IND3); digitalWrite(IND_ST_CP, HIGH); }Вот щас у меня вверху это переменные но мне от них надо избавится. ПРобывал конструкцию digitalRead для аналоговых партов не пашет( и analogread тоже не пашет. Вот я и спрашиваю ест ьеще варианты? или может я че не так делаю.
А вот ниже порты которые работают на ввод они цифровые и там все пашет норм.
А обязательно в сетапе делать объяву такую:
pinMode(14, OUTPUT);
digitalWrite(14, HIGH); ??? я просто не делал сразу в функции передаю на нужный порт значение через analogWrite
Скетч неполный, поэтому сказть ничего нельзя.
о, судя по последнему посту, Вы пихаете что-то на пин 14 (он же A0) с помощью analogWrite, я Вас правильно понял? Если так, то это не работает и работаnь не может. Что у Вас за ардуино - видимо, большой секрет (ещё больший, чем текст программы), но если что-то типа UNO/Nano, то analogWrite работает только с цифровыми пинами 3, 11, 5, 6, 9, 10 и ни с какими другими.
И ещё, когда Вы показываете людям скетч, всегда делайте следующее:
1) скетч должен быть полным, чтобы человек мог его запустить.
2) скетч должен быть коротким. Никто не будет продираться через 100500 строк Вашего вывода на LCD или там чтения из порта - пишете короткий скетч (не более 10-20 строк) который запускается и демонстрирует проблему.
Тогда вероятность, что кто-то поможет велика. А так как Вы сделали. скетч неполный, чему равны используемые константы - ХЗ. И как тут разбираться?
Т.е. совет-то простой, не создавайте лишних проблем тому, кто хочет Вам помочь и люди к Вам потянутся.
Аналоговые пины у вас это
аналоговые входы
или ШИМ выходы???
И те и другие могут выдавать сигнал на опртон,
но в абсолютно разных режимах.
В том то и дело. Что по простому тут нельзя((( Весь скетч огромный очень. Плата не ардуино!!! плата это ПЛК собственного производства. еще просто то там стоит атмега 2560 у нее 9 входом цифровых работают на вход и 9 аналогвых пинов работают на выход. Вот и вопрос как лучше организовать опрос пина чтобы узнать в каком он щас состоянии. МОгу кончено скетч сюда выложить но там реально ребят много всего((( Поэтому я не прошу вдаватся в код а просто порассждать в целом. Крч я так понял что мне правильнее объявить в сетапе пины как цифру двумя строчками так? как выше я писал. И после этого пробывать узнавать на них статус командой digitalread так?
Seltvik, создается впечатление, что Вы хотите сделать одно, а делаете совершенно другое.
И происходит это от того, что Вы не имеете ни малейшего понятия, что такое аналоговый порт, что именно делает analogWrite, и что, в частности, между ними нет никакой связи.
без комментариев))))
В том то и дело. Что по простому тут нельзя((( Весь скетч огромный очень. Плата не ардуино!!! плата это ПЛК собственного производства. еще просто то там стоит атмега 2560 у нее 9 входом цифровых работают на вход и 9 аналогвых пинов работают на выход. Вот и вопрос как лучше организовать опрос пина чтобы узнать в каком он щас состоянии. МОгу кончено скетч сюда выложить но там реально ребят много всего((( Поэтому я не прошу вдаватся в код а просто порассждать в целом. Крч я так понял что мне правильнее объявить в сетапе пины как цифру двумя строчками так? как выше я писал. И после этого пробывать узнавать на них статус командой digitalread так?
Если "просто порассждать в целом", то давайте начнем с ответов на некоторые вопросы (для 2560 меги):
1. Какие именно пины Вы считаете аналоговыми? Перечислите их.
2. Как именно работает analogWrite? Что при этом происходит с пином?
3. На каких именно пинах может работать analogWrite? Перечислите их.
Вот давайте так. вот есть функция:
//Функция вывода индикации void FNC_DISPLAY(){ if (digitalRead(OUTPORT_1)==1){IND3 |= (1 << 3);} else {IND3 &= ~(1 << 3);} if (digitalRead(OUTPORT_2)==1){IND3 |= (1 << 1);} else {IND3 &= ~(1 << 1);} if (digitalRead(OUTPORT_3)==1){IND2 |= (1 << 7);} else {IND2 &= ~(1 << 7);} if (digitalRead(OUTPORT_4)==1){IND2 |= (1 << 5);} else {IND2 &= ~(1 << 5);} if (digitalRead(OUTPORT_5)==1){IND2 |= (1 << 3);} else {IND2 &= ~(1 << 3);} if (digitalRead(OUTPORT_6)==1){IND2 |= (1 << 1);} else {IND2 &= ~(1 << 1);} if (digitalRead(OUTPORT_7)==1){IND1 |= (1 << 7);} else {IND1 &= ~(1 << 7);} if (digitalRead(OUTPORT_8)==1){IND1 |= (1 << 5);} else {IND1 &= ~(1 << 5);} if (digitalRead(OUTPORT_9)==1){IND1 |= (1 << 3);} else {IND1 &= ~(1 << 3);} if (digitalRead(INTPORT_1)==0){IND3 |= (1 << 2);} else {IND3 &= ~(1 << 2);} if (digitalRead(INTPORT_2)==0){IND3 |= (1 << 0);} else {IND3 &= ~(1 << 0);} if (digitalRead(INTPORT_3)==0){IND2 |= (1 << 6);} else {IND2 &= ~(1 << 6);} if (digitalRead(INTPORT_4)==0){IND2 |= (1 << 4);} else {IND2 &= ~(1 << 4);} if (digitalRead(INTPORT_5)==0){IND2 |= (1 << 2);} else {IND2 &= ~(1 << 2);} if (digitalRead(INTPORT_6)==0){IND2 |= (1 << 0);} else {IND2 &= ~(1 << 0);} if (digitalRead(INTPORT_7)==0){IND1 |= (1 << 6);} else {IND1 &= ~(1 << 6);} if (digitalRead(INTPORT_8)==0){IND1 |= (1 << 4);} else {IND1 &= ~(1 << 4);} if (digitalRead(INTPORT_9)==0){IND1 |= (1 << 2);} else {IND1 &= ~(1 << 2);} //if (Rel_1==1){IND1 |= (1 << 1);} else {IND1 &= ~(1 << 1);} if (digitalRead(RELAY_2)==1){IND1 |= (1 << 0);} else {IND1 &= ~(1 << 0);} digitalWrite(IND_ST_CP, LOW); shiftOut(IND_DS, IND_SH_CP, MSBFIRST, IND1); shiftOut(IND_DS, IND_SH_CP, MSBFIRST, IND2); shiftOut(IND_DS, IND_SH_CP, MSBFIRST, IND3); digitalWrite(IND_ST_CP, HIGH); }В ней переменные думаю все понятны. INы это байты на каждый сдвиг регистор свой байт. А в настройках у меня вот часть кода сетапа:
void setup() { pinMode(OUTPORT_1, OUTPUT); //Настройка порта вывода pinMode(OUTPORT_2, OUTPUT); //Настройка порта вывода pinMode(OUTPORT_3, OUTPUT); //Настройка порта вывода pinMode(OUTPORT_4, OUTPUT); //Настройка порта вывода pinMode(OUTPORT_5, OUTPUT); //Настройка порта вывода pinMode(OUTPORT_6, OUTPUT); //Настройка порта вывода pinMode(OUTPORT_7, OUTPUT); //Настройка порта вывода pinMode(OUTPORT_8, OUTPUT); //Настройка порта вывода pinMode(OUTPORT_9, OUTPUT); //Настройка порта вывода digitalWrite(OUTPORT_1, HIGH); digitalWrite(OUTPORT_2, HIGH); digitalWrite(OUTPORT_3, HIGH); digitalWrite(OUTPORT_4, HIGH); digitalWrite(OUTPORT_5, HIGH); digitalWrite(OUTPORT_6, HIGH); digitalWrite(OUTPORT_7, HIGH); digitalWrite(OUTPORT_8, HIGH); digitalWrite(OUTPORT_9, HIGH); pinMode(INTPORT_1, INPUT_PULLUP); //Настройка порта ввода pinMode(INTPORT_2, INPUT_PULLUP); //Настройка порта ввода pinMode(INTPORT_3, INPUT_PULLUP); //Настройка порта ввода pinMode(INTPORT_4, INPUT_PULLUP); //Настройка порта ввода pinMode(INTPORT_5, INPUT_PULLUP); //Настройка порта ввода pinMode(INTPORT_6, INPUT_PULLUP); //Настройка порта ввода pinMode(INTPORT_7, INPUT_PULLUP); //Настройка порта ввода pinMode(INTPORT_8, INPUT_PULLUP); //Настройка порта ввода pinMode(INTPORT_9, INPUT_PULLUP); //Настройка порта ввода pinMode(IND_ST_CP, OUTPUT); //Настройка порта управления индикацией pinMode(IND_SH_CP, OUTPUT); //Настройка порта управления индикацией pinMode(IND_DS, OUTPUT); //Настройка порта управления индикацией pinMode(RELAY_2, OUTPUT); //Настройка порта управления реле 2Должно работать в той функции опрос? если я где нит ьв программе буду делать вывод щас через digitalWrite на заданные пины? я щас попробую но это я просто в целом написал
Я же Вам уже сказал - аналоговые пины не работают с analogWrite. НЕ РАБОТАЮТ! analogWrite работает только с цифровыми пинами и то не со всеми. В случае 2560, analogWrite можно использовать ТОЛЬКО с цифрвыми пинами 2-13 и 44-46 и ни с каким другими. Вам что-то не понятно?
Вот какие пины:
Вот давайте так. вот есть функция:
нет, не давайте.
Я же Вам писал, код должен быть полным. Вот чему равны Ваши константы? ХЗ! А значит и ответ на Ваш вопрос
Должно работать в той функции опрос?
Точно такой же - ХЗ.
Вы не читаете, что Вам пишут или смысла не слова "полный" не понимаете?
Seltvik, как Вы сами думаете, приведенный Вами фрагмент откомпилируется?
Если "нет", то почему? (правильный ответ: "потому, что компилятору недостаточно информации, чтобы это правильно откомпилировать", а Вы всерьез считаете, что при явно недостаточной информации можно ответить на Ваши вопросы?)
Давайте начнем с начала: ответьте на вопросы из поста №13.
Ок вот ваш весь скетч:
#define BLYNK_DEBUG //Дебаг работы с Blynk #define BLYNK_PRINT Serial3 //Вывод данных в сериал порт #include <SPI.h> //Библиотека для SPI #include "nRF24L01.h" //Библиотека для nRF2401+ #include "RF24.h" //Библиотека для nRF2401+ #include <ESP8266_Lib.h> //Библиотека для ESP #include <BlynkSimpleShieldEsp8266.h> //Библиотека для Blynk #include <SimpleModbusMaster.h> //Библиотека для протокола ModBUS #include <DS3231.h> //Библиотека для часов DS3231 #include <Wire.h> //Библиотека Wire #include <Eeprom24C04_16.h> //Библиотека для работы с памятью 24С04 char auth[] = "123123123"; //Ключ для подключения к WiFi char ssid[] = "123123"; //Логин для подключения к WiFi char pass[] = "123123"; //Пароль для подключения к WiFi #define EspSerial Serial2 //Установка сериала для работы с ESP #define ESP8266_BAUD 115200 //Установка скорости для работы с ESP ESP8266 wifi(&EspSerial); //Переменная для ESP DS3231 rtc(SDA, SCL); //Переменная для DS3231 Time t; //Переменная для хранения времени #define baud 9600 //Установка скорости для modbus #define timeout 1000 //Установка задержки для modbus #define polling 200 //Установка modbus #define retry_count 10 //Установка повторов для modbus #define TxEnablePin 4 //Установка номера пина управления для modbus #define TOTAL_NO_OF_REGISTERS 100 //Установка количества регистров для modbus #define EEPROM_ADDRESS 0x50 //Установка адреса памяти static Eeprom24C04_16 eeprom(EEPROM_ADDRESS); enum { //Установка пакетов для modbus PACKET1, PACKET2, PACKET3, PACKET4, TOTAL_NO_OF_PACKETS}; Packet packets[TOTAL_NO_OF_PACKETS]; //Установка переменной пакетов modbus unsigned int regs[TOTAL_NO_OF_REGISTERS]; //Установка переменной для регистров modbus const uint64_t pipe = 0xF0F1F2F3F4LL; //Установка номера трубы для передачи и приема nRF2401 RF24 radio(8, 9); //Установка пинов CE, CSN для nRF2401 int Protocol[5]; //Массив протокла обмена с помощью nRF2401 int OUTPORT_1=A0; //Установка пина вывода int OUTPORT_2=A1; //Установка пина вывода int OUTPORT_3=A2; //Установка пина вывода int OUTPORT_4=A3; //Установка пина вывода int OUTPORT_5=A4; //Установка пина вывода int OUTPORT_6=A5; //Установка пина вывода int OUTPORT_7=A6; //Установка пина вывода int OUTPORT_8=A7; //Установка пина вывода int OUTPORT_9=A8; //Установка пина вывода int INTPORT_1=41; //Установка пина ввода int INTPORT_2=40; //Установка пина ввода int INTPORT_3=37; //Установка пина ввода int INTPORT_4=36; //Установка пина ввода int INTPORT_5=35; //Установка пина ввода int INTPORT_6=34; //Установка пина ввода int INTPORT_7=33; //Установка пина ввода int INTPORT_8=32; //Установка пина ввода int INTPORT_9=31; //Установка пина ввода int AINTPORT_1=A9; //Установка пина А.ввода int AINTPORT_2=A10; //Установка пина А.ввода int AINTPORT_3=A11; //Установка пина А.ввода int AINTPORT_4=A12; //Установка пина А.ввода int AINTPORT_5=A13; //Установка пина А.ввода int RELAY_1=A14; //Установка пина реле 1 int RELAY_2=26; //Установка пина реле 2 int IND_ST_CP=45; //Установка пина управления индикацией int IND_SH_CP=46; //Установка пина управления индикацией int IND_DS=44; //Установка пина управления индикацией byte IND1=B00000000; //Установка байта первой секции индикации byte IND2=B00000000; //Установка байта второй секции индикации byte IND3=B00000000; //Установка байта третей секции индикации int BUZ=2; //Установка пина бузера int LOAD=29; //Установка пина бузера ////////////////////////////////////////////////////////////////////////////////////////////////// //ПЕРЕМЕННЫЕ ПОЛЬЗОВАТЕЛЯ///////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////// int PIR_1=0; //Переменная PIR датчика int PIR_2=0; //Переменная PIR датчика int PIR_3=0; //Переменная PIR датчика int PIR_4=0; //Переменная PIR датчика int PIR_5=0; //Переменная PIR датчика int PIR_6=0; //Переменная PIR датчика int PIR_7=0; //Переменная PIR датчика int DEF_1=0; //Переменная датчика охраны 1 int DEF_2=0; //Переменная датчика охраны 2 int DEF_3=0; //Переменная датчика охраны 3 int DEF_4=0; //Переменная датчиков охраны 4 int OUT_1=0; //Переменная состояния пина int OUT_2=0; //Переменная состояния пина int OUT_3=0; //Переменная состояния пина int OUT_4=0; //Переменная состояния пина int OUT_5=0; //Переменная состояния пина int OUT_6=0; //Переменная состояния пина int OUT_7=0; //Переменная состояния пина int OUT_8=0; //Переменная состояния пина int OUT_9=0; //Переменная состояния пина int IN_1=0; //Переменная состояния пина int IN_2=0; //Переменная состояния пина int IN_3=0; //Переменная состояния пина int IN_4=0; //Переменная состояния пина int IN_5=0; //Переменная состояния пина int IN_6=0; //Переменная состояния пина int IN_7=0; //Переменная состояния пина int IN_8=0; //Переменная состояния пина int IN_9=0; //Переменная состояния пина float TEMP_1=0; //Переменная для температуры 1 float TEMP_2=0; //Переменная для температуры 2 float TEMP_3=0; //Переменная для температуры 3 float TEMP_4=0; //Переменная для температуры 4 float TEMP_5=0; //Переменная для температуры 5 float TEMP_S=0; //Переменная для температуры 6 float HUM_1=0; //Переменная для влажности 1 float HUM_2=0; //Переменная для влажности 2 float HUM_3=0; //Переменная для влажности 3 float HUM_4=0; //Переменная для влажности 4 float BAR_1=0; //Переменная для давления int LED_1=0; //Переменная для статуса светодиода int LED_2=0; //Переменная для статуса светодиода int LED_3=0; //Переменная для статуса светодиода int LED_4=0; //Переменная для статуса светодиода int MODE_1=0; //Переменная для хранения режима охраны int MODE_2=0; //Переменная для хранения режима автоохраны int MODE_3=0; //Переменная для хранения режима автосвета int MODE_4=0; //Переменная для хранения режима автоклимата int ALARM=0; //Переменная для сброса охраны float WATER_COLD=0; //Переменная для хранения показания х.воды float WATER_HOT=0; //Переменная для хранения показания г.воды float KWT=0; //Переменная для хранения показания кВт int Hour=0; //Переменная для хранения часов int Min=0; //Переменная для хранения минут const word address1 = 0; //Переменная адреса 1 const word address2 = 0; //Переменная адреса 2 const word address3 = 0; //Переменная адреса 3 const word address4 = 0; //Переменная адреса 4 const word address5 = 0; //Переменная адреса 5 String Status1; String Status2; String Status3; String Status4; BlynkTimer timer; //Объявление виджета светодиода таймера Blynk BLYNK_WRITE(V0){OUT_1=1;} else {OUT_1=0;} //Получение статуса света 1 BLYNK_WRITE(V1){FNC_LIVOLO(OUTPORT_2);} //Получение статуса света 2 BLYNK_WRITE(V2){FNC_LIVOLO(OUTPORT_3);} //Получение статуса света 3 BLYNK_WRITE(V3){FNC_LIVOLO(OUTPORT_4);} //Получение статуса света 4 BLYNK_WRITE(V4){FNC_LIVOLO(OUTPORT_5);} //Получение статуса света 5 BLYNK_WRITE(V5){FNC_LIVOLO(OUTPORT_6);} //Получение статуса света 6 BLYNK_WRITE(V6){FNC_LIVOLO(OUTPORT_7);} //Получение статуса света 7 BLYNK_WRITE(V21){MODE_1=param.asInt();} //Получение статуса режима охраны BLYNK_WRITE(V41){MODE_2=param.asInt();} //Получение статуса режима автоохраны BLYNK_WRITE(V39){MODE_3=param.asInt();} //Получение статуса режима автосвета BLYNK_WRITE(V40){MODE_4=param.asInt();} //Получение статуса режима автоклимата BLYNK_WRITE(V25){ALARM=param.asInt();} //Получение статуса сброса сирены BLYNK_WRITE(V20){FNC_SEND_NRF(344,255);} //Включение увлажнителя BLYNK_WRITE(V22){FNC_SEND_NRF(344,255);} //Включение кондиционера BLYNK_WRITE(V19){FNC_SEND_NRF(344,255);} //Включение диспенсера BLYNK_WRITE(V33){FNC_SEND_NRF(344,255);} //Закрыть клапана BLYNK_WRITE(V34){FNC_SEND_NRF(344,255);} //Открыть клапана void TimerTemp(){ Blynk.virtualWrite(V7, TEMP_1); //Вывод температуры 1 Blynk.virtualWrite(V8, TEMP_2); //Вывод температуры 2 Blynk.virtualWrite(V9, TEMP_3); //Вывод температуры 3 Blynk.virtualWrite(V10, TEMP_4); //Вывод температуры 4 Blynk.virtualWrite(V15, TEMP_5);} //Вывод температуры 5 void TimerHum(){ Blynk.virtualWrite(V11, HUM_1); //Вывод влажности 1 Blynk.virtualWrite(V12, HUM_2); //Вывод влажности 2 Blynk.virtualWrite(V13, HUM_3); //Вывод влажности 3 Blynk.virtualWrite(V14, HUM_4); //Вывод влажности 4 Blynk.virtualWrite(V16, BAR_1);} //Вывод давления 1 void Batstatus(){ Blynk.virtualWrite(V29, LED_1); //Статус батарейки 1 Blynk.virtualWrite(V30, LED_2); //Статус батарейки 2 Blynk.virtualWrite(V31, LED_3); //Статус батарейки 3 Blynk.virtualWrite(V32, LED_4);} //Статус батарейки 4 void TimerWE(){ Blynk.virtualWrite(V26, KWT); //Вывод килловатт Blynk.virtualWrite(V27, WATER_HOT); //Вывод г.воды Blynk.virtualWrite(V28, WATER_COLD);} //Вывод х.воды void TempDS(){ Blynk.virtualWrite(V17, TEMP_S); //Вывод температуры контроллера FNC_DSTEMP();} void TimeDS(){ Blynk.virtualWrite(V35, Hour); //Вывод часа Blynk.virtualWrite(V36, Min); //Вывод минут FNC_DSTIME();} void TimerSecurity(){ Blynk.virtualWrite(V23, Status1); //Вывод статуса движение Blynk.virtualWrite(V38, Status2); //Вывод статуса дым Blynk.virtualWrite(V18, Status3); //Вывод статуса протечка Blynk.virtualWrite(V24, Status4); //Вывод статуса дверь } //ПЕРВИЧНАЯ НАСТРОЙКА ПРИ ЗАПУСКЕ///////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////// void setup() { pinMode(OUTPORT_1, OUTPUT); //Настройка порта вывода pinMode(OUTPORT_2, OUTPUT); //Настройка порта вывода pinMode(OUTPORT_3, OUTPUT); //Настройка порта вывода pinMode(OUTPORT_4, OUTPUT); //Настройка порта вывода pinMode(OUTPORT_5, OUTPUT); //Настройка порта вывода pinMode(OUTPORT_6, OUTPUT); //Настройка порта вывода pinMode(OUTPORT_7, OUTPUT); //Настройка порта вывода pinMode(OUTPORT_8, OUTPUT); //Настройка порта вывода pinMode(OUTPORT_9, OUTPUT); //Настройка порта вывода digitalWrite(OUTPORT_1, HIGH); digitalWrite(OUTPORT_2, HIGH); digitalWrite(OUTPORT_3, HIGH); digitalWrite(OUTPORT_4, HIGH); digitalWrite(OUTPORT_5, HIGH); digitalWrite(OUTPORT_6, HIGH); digitalWrite(OUTPORT_7, HIGH); digitalWrite(OUTPORT_8, HIGH); digitalWrite(OUTPORT_9, HIGH); pinMode(INTPORT_1, INPUT_PULLUP); //Настройка порта ввода pinMode(INTPORT_2, INPUT_PULLUP); //Настройка порта ввода pinMode(INTPORT_3, INPUT_PULLUP); //Настройка порта ввода pinMode(INTPORT_4, INPUT_PULLUP); //Настройка порта ввода pinMode(INTPORT_5, INPUT_PULLUP); //Настройка порта ввода pinMode(INTPORT_6, INPUT_PULLUP); //Настройка порта ввода pinMode(INTPORT_7, INPUT_PULLUP); //Настройка порта ввода pinMode(INTPORT_8, INPUT_PULLUP); //Настройка порта ввода pinMode(INTPORT_9, INPUT_PULLUP); //Настройка порта ввода pinMode(IND_ST_CP, OUTPUT); //Настройка порта управления индикацией pinMode(IND_SH_CP, OUTPUT); //Настройка порта управления индикацией pinMode(IND_DS, OUTPUT); //Настройка порта управления индикацией pinMode(RELAY_2, OUTPUT); //Настройка порта управления реле 2 rtc.begin(); //Запуск часов //rtc.setDOW(SUNDAY); //Установка дня часов //rtc.setTime(16, 02, 0); //Установка времени часов //rtc.setDate(24, 6, 2018); //Установка даты часов eeprom.initialize(); //Иницилизация EEPROM Serial3.begin(9600); //Запуск последовательного порта 3 EspSerial.begin(ESP8266_BAUD); //Запуск ESP Blynk.begin(auth, wifi, ssid, pass); //Запуск Blynk timer.setInterval(65000L, Batstatus); //Создание таймера для светодиодов timer.setInterval(60000L, TimerWE); //Создание таймера для воды timer.setInterval(7000L, TimerSecurity); //Создание таймера для охраны timer.setInterval(30000L, TimerHum); //Создание таймера для влажности timer.setInterval(15000L, TimerTemp); //Создание таймера для температуры timer.setInterval(10000L, TempDS); //Создание таймера для температуры к timer.setInterval(5000L, TimeDS); //Создание таймера для времени radio.begin(); //Запуск приемо-передатчика nRF2401 delay(200); radio.setChannel(100); //Выбор канала nRF2401 radio.setDataRate(RF24_1MBPS); //Выбор скорости nRF2401 radio.setPALevel(RF24_PA_HIGH); //Выбор мощности nRF2401 //radio.setAutoAck(false); //Отключение приема nRF2401 radio.openReadingPipe(1,pipe); //Открытие трубы nRF2401 radio.startListening(); //Запуск прослушивания эфира nRF2401 modbus_construct(&packets[PACKET1], 3, READ_HOLDING_REGISTERS, 0, 12, 0); //Формаирование пакета modbus 1 modbus_construct(&packets[PACKET2], 2, READ_HOLDING_REGISTERS, 0, 7, 12); //Формаирование пакета modbus 2 modbus_construct(&packets[PACKET3], 4, READ_HOLDING_REGISTERS, 0, 3, 19); //Формаирование пакета modbus 3 //PRESET_MULTIPLE_REGISTERS modbus_configure(&Serial, baud, SERIAL_8N2, timeout, polling, retry_count, TxEnablePin, packets, TOTAL_NO_OF_PACKETS, regs); } //ОСНОВНОЙ ЦИКЛ ПРОШИВКИ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////// void loop() { digitalWrite(LOAD,HIGH); //Включение светодиода цикла Blynk.run(); //Опрос сервера Blynk timer.run(); //Выполнение таймеров modbus_update(); //Запуск опроса по MODBUS FNC_VARIABLE(); //Работа с переменными FNC_TAKE_NRF(); //Запуск опроса по nRF2401 if (MODE_1==1){FNC_SECURITY();} //Включение функции охарны FNC_RESET_SECURITY(); //Сброс сигнализации FNC_OUTPORTS(); FNC_DISPLAY(); //Обновление индикации digitalWrite(LOAD,LOW); //Выключение светодиода цикла } //ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////// //Функция записи в доп.память void FNC_WRITE_EEPROM(){ //eeprom.writeByte(address1, Temp); } //Функция чтения доп.памяти void FNC_READ_EEPROM(){ //data = eeprom.readByte(address); } //Функция охраны void FNC_SECURITY(){ if (DEF_1==1){Status1="ALARM"; analogWrite(RELAY_1,255);} if (DEF_2==1){Status2="ALARM"; analogWrite(RELAY_1,255);} if (DEF_3==1){Status3="ALARM"; analogWrite(RELAY_1,255);} if (DEF_4==1){Status4="ALARM"; analogWrite(RELAY_1,255);} } //Функция сброса охраны void FNC_RESET_SECURITY(){ if (ALARM==1){ analogWrite(RELAY_1,0); Status1="NO EVENTS"; Status2="NO EVENTS"; Status3="NO EVENTS"; Status4="NO EVENTS"; ALARM=0;}} //Функция автосвета void FNC_AUTO_LIGHT(){} //Функция полного отключения света void FNC_OFF_LIGHT(){} //Функция автоклимата void FNC_AUTO_CLIMAT(){} //Функция преобразования переменных void FNC_VARIABLE(){ TEMP_1=regs[0]; //Запись данных в переменные пользователя TEMP_2=regs[3]; //Запись данных в переменные пользователя TEMP_3=regs[6]; //Запись данных в переменные пользователя TEMP_4=regs[9]; //Запись данных в переменные пользователя TEMP_1=TEMP_1/10; //Запись данных в переменные пользователя TEMP_2=TEMP_2/10; //Запись данных в переменные пользователя TEMP_3=TEMP_3/10; //Запись данных в переменные пользователя TEMP_4=TEMP_4/10; //Запись данных в переменные пользователя HUM_1=regs[1]; //Запись данных в переменные пользователя HUM_2=regs[4]; //Запись данных в переменные пользователя HUM_3=regs[7]; //Запись данных в переменные пользователя HUM_4=regs[10]; //Запись данных в переменные пользователя PIR_1=regs[12]; //Запись данных в переменные пользователя PIR_2=regs[13]; //Запись данных в переменные пользователя PIR_3=regs[14]; //Запись данных в переменные пользователя PIR_4=regs[15]; //Запись данных в переменные пользователя PIR_5=regs[16]; //Запись данных в переменные пользователя PIR_6=regs[17]; //Запись данных в переменные пользователя PIR_7=regs[18]; //Запись данных в переменные пользователя DEF_1=regs[19]; //Запись данных в переменные пользователя DEF_2=regs[20]; //Запись данных в переменные пользователя DEF_3=regs[21]; //Запись данных в переменные пользователя if (PIR_1==0){DEF_4=1;} else {DEF_4=0;} //Запись данных в переменные пользователя if (regs[2]==1) {LED_1=255;} else {LED_1=0;} if (regs[5]==1) {LED_2=255;} else {LED_2=0;} if (regs[8]==1) {LED_3=255;} else {LED_3=0;} if (regs[11]==1){LED_4=255;} else {LED_4=0;} } //Функция отправки данных с nRF2401 void FNC_SEND_NRF (int ID, int data) { Protocol[0]=ID; Protocol[1]=data; radio.stopListening(); radio.openWritingPipe(pipe); radio.write(&Protocol, sizeof(Protocol)); radio.openReadingPipe(1,pipe); radio.startListening();} //Функция приема данных с nRF2401 void FNC_TAKE_NRF(){ if (radio.available()){ radio.read(&Protocol, sizeof(Protocol)); //Получение данных по nRF2401 if (Protocol[0]==556){TEMP_5=Protocol[1]; BAR_1=Protocol[2]; TEMP_5=TEMP_5/10; BAR_1=BAR_1/10;} //Данные с в.датчика температуры if (Protocol[0]==333){KWT=Protocol[1];} //Данные с в.датчика эл.энергии if (Protocol[0]==444){WATER_HOT=Protocol[1]; WATER_COLD=Protocol[2];}} //Данные с в.датчика воды } //Функция управления LIVOLO выключателями void FNC_LIVOLO (int Butt){ analogWrite(Butt,255); delay(100); analogWrite(Butt,0);} //Функция вывода индикации void FNC_OUTPORTS(){ if (OUT_1==1){analogWrite(OUTPORT_1,255);} else {analogWrite(OUTPORT_1,0);} if (OUT_2==1){analogWrite(OUTPORT_2,255);} else {analogWrite(OUTPORT_2,0);} if (OUT_3==1){analogWrite(OUTPORT_3,255);} else {analogWrite(OUTPORT_3,0);} if (OUT_4==1){analogWrite(OUTPORT_4,255);} else {analogWrite(OUTPORT_4,0);} if (OUT_5==1){analogWrite(OUTPORT_5,255);} else {analogWrite(OUTPORT_5,0);} if (OUT_6==1){analogWrite(OUTPORT_6,255);} else {analogWrite(OUTPORT_6,0);} if (OUT_7==1){analogWrite(OUTPORT_7,255);} else {analogWrite(OUTPORT_7,0);} if (OUT_8==1){analogWrite(OUTPORT_8,255);} else {analogWrite(OUTPORT_8,0);} if (OUT_9==1){analogWrite(OUTPORT_9,255);} else {analogWrite(OUTPORT_9,0);} } //Функция вывода индикации void FNC_DISPLAY(){ if (digitalRead(OUTPORT_1)==1){IND3 |= (1 << 3);} else {IND3 &= ~(1 << 3);} if (digitalRead(OUTPORT_2)==1){IND3 |= (1 << 1);} else {IND3 &= ~(1 << 1);} if (digitalRead(OUTPORT_3)==1){IND2 |= (1 << 7);} else {IND2 &= ~(1 << 7);} if (digitalRead(OUTPORT_4)==1){IND2 |= (1 << 5);} else {IND2 &= ~(1 << 5);} if (digitalRead(OUTPORT_5)==1){IND2 |= (1 << 3);} else {IND2 &= ~(1 << 3);} if (digitalRead(OUTPORT_6)==1){IND2 |= (1 << 1);} else {IND2 &= ~(1 << 1);} if (digitalRead(OUTPORT_7)==1){IND1 |= (1 << 7);} else {IND1 &= ~(1 << 7);} if (digitalRead(OUTPORT_8)==1){IND1 |= (1 << 5);} else {IND1 &= ~(1 << 5);} if (digitalRead(OUTPORT_9)==1){IND1 |= (1 << 3);} else {IND1 &= ~(1 << 3);} if (digitalRead(INTPORT_1)==0){IND3 |= (1 << 2);} else {IND3 &= ~(1 << 2);} if (digitalRead(INTPORT_2)==0){IND3 |= (1 << 0);} else {IND3 &= ~(1 << 0);} if (digitalRead(INTPORT_3)==0){IND2 |= (1 << 6);} else {IND2 &= ~(1 << 6);} if (digitalRead(INTPORT_4)==0){IND2 |= (1 << 4);} else {IND2 &= ~(1 << 4);} if (digitalRead(INTPORT_5)==0){IND2 |= (1 << 2);} else {IND2 &= ~(1 << 2);} if (digitalRead(INTPORT_6)==0){IND2 |= (1 << 0);} else {IND2 &= ~(1 << 0);} if (digitalRead(INTPORT_7)==0){IND1 |= (1 << 6);} else {IND1 &= ~(1 << 6);} if (digitalRead(INTPORT_8)==0){IND1 |= (1 << 4);} else {IND1 &= ~(1 << 4);} if (digitalRead(INTPORT_9)==0){IND1 |= (1 << 2);} else {IND1 &= ~(1 << 2);} //if (Rel_1==1){IND1 |= (1 << 1);} else {IND1 &= ~(1 << 1);} if (digitalRead(RELAY_2)==1){IND1 |= (1 << 0);} else {IND1 &= ~(1 << 0);} digitalWrite(IND_ST_CP, LOW); shiftOut(IND_DS, IND_SH_CP, MSBFIRST, IND1); shiftOut(IND_DS, IND_SH_CP, MSBFIRST, IND2); shiftOut(IND_DS, IND_SH_CP, MSBFIRST, IND3); digitalWrite(IND_ST_CP, HIGH); } //Функция опроса времени с DS3231 void FNC_DSTIME(){ t = rtc.getTime(); Hour=t.hour; Min=t.min;} //Функция опроса температуры с DS3231 void FNC_DSTEMP(){TEMP_S=rtc.getTemp();} //Функция BUZZER void FNC_BUZZER(){ digitalWrite(BUZ,HIGH); delay(200); digitalWrite(BUZ,LOW);}Да все компилится))) и даже работает)))
Ок вот ваш весь скетч:
Во-первых, скетч не наш, а Ваш.
Вы нам сделали одолжение, тем, что его выложили? А не пойти ли Вам на? Это Ваш скетч, и ваша проблема. Хотите её решать - делайте, что говорят, а не делайте нам одолжения.
И, да, для алтернативно одарённых повторяю
2) скетч должен быть коротким. Никто не будет продираться через 100500 строк Вашего вывода на LCD или там чтения из порта - пишете короткий скетч (не более 10-20 строк) который запускается и демонстрирует проблему.
не создавайте лишних проблем тому, кто хочет Вам помочь и люди к Вам потянутся.
Ладно ребят хватит этот концерт делать. Вы Евгений сами уже заговорились! То вы пишите нужен полный скетч! и в тоже время не большой! Я пишу что он большой! Вы пишите выложите счетч! Вы уже определитесь сами то! Крч закрываем тему!!!! Не надо мне такой помощи!!! я не делаю никому одолжения!!! На амперке люди как то попроще((( понимают меня. А тут как то не зашло. элементарный вопрос к тем кто делал а не тупо знает теорию! Теория и практика бывают вообще разные! Всем еще раз спасибо и хороших выходных!
И Вам не хворать!
Да все компилится))) и даже работает)))
Поди Евгений вы не настолько знаете всю кухню. Вот скетч просто для теста! И все пашет!
А вы говорите не работает! Все ка краз и наоборот! Это так вам на будущее будет время проверьте вашу теорию))))
Не знаю для чего. Просто хотел чтобы мне прояснили как дела обстоят на практике с опросом пина его состояния. При условии что пины у меня аналоговые и работают на выход через функцию analogWrite. Как узнать их состояние без лишних переменных и лишних сторок. digitalRead не работает почему то.
......... При условии что пины у меня аналоговые и работают на выход через функцию analogWrite
Вас читать учили в школе?
Вам уже три раза сказали что аналоговые пины настроенные как цифровые
и пины ШИМа которые понимают команду analogWrite -
это РАЗНЫЕ пины.
Да я это знаю. То что выше я написал для Евгения который писал что типа на меге2560 команда для шима analogWrite не пашет типа с аналоговыми пинами))) вот код такой тоже пашет это работа как с цифровыми:
Проблема в том что командой digitalRead нифига не получается снять статус на порте. почему не пойму(
Всем спасибо вроде разобрался.
Поди Евгений вы не настолько знаете всю кухню.
Да, где уж мне :)))
Я же Вам уже сказал - аналоговые пины не работают с analogWrite. НЕ РАБОТАЮТ! analogWrite работает только с цифровыми пинами и то не со всеми. В случае 2560, analogWrite можно использовать ТОЛЬКО с цифрвыми пинами 2-13 и 44-46 и ни с каким другими. Вам что-то не понятно?
Ну это же ваши слова! Я их решил проверить на простом скетче блинк и все работает! Так что наверное что то вы упустили
Да, действительно, что-то я упустил :)))
analogWrite(x, 255) - это просто digitalWrite(x, HIGH), а analogWrite(x, 0) - это просто digitalWrite(x, LOW).
Попробуй любое другое число (хоть 1 или 254), чтобы именно analogWrite работал.
Работает у него, дурашка.
Вы видать плохо читаете посты выше? Я написал пояснение к словам Евгения который сказал следующее цитирую:
Я же Вам уже сказал - аналоговые пины не работают с analogWrite. НЕ РАБОТАЮТ! analogWrite работает только с цифровыми пинами и то не со всеми. В случае 2560, analogWrite можно использовать ТОЛЬКО с цифрвыми пинами 2-13 и 44-46 и ни с каким другими. Вам что-то не понятно?
То что аналоговыми портами можно управлять функцией analogWrite и функцией digitalWrite это я и так знал. Но мне нужен именно analogWrite ибо спомощью него я регулирую открытие транзистора! Да я знаю что когда с шимом работают тоже применяют эту же функцию. Поэтому я его в скетче прописал и он работает с аналоговыми портами. Точнее это только название "аналоговые" я тоже понимаю. Так что думаю вы просто не так поняли мои слова. Т.е. чтобы вы понимали у меня все пашет как и задумано. Просто вопрос был с опросом портов я его сделал. Проблема была вообще в задержках моих поэтому я не успевал увидить вывод индикации.
То что аналоговыми портами можно управлять функцией analogWrite ............ это я и так знал.
По моему это какая-то неизлечимая болезнь косит людей и затуманивает разум...........
Вы трудный? вы мое устроиство не видели. Да мне нужен шим и я его применяю но на некоторых пинах цифровых которые заточены на это!!! это я и так знаю и все пашет!!! Речь тут уже пошла не за начальную тему как понял. И вернусь еще раз к началу. Евгений написал что не будет она работать! Она работает просто не как для ШИМА а просто на включение, но работает. Да функция была задумана как управление ШИМ сигналом. Вам на будущее не приводите людям картинки ибо те кто реально не шарят не поймут все равно. Лучше вот так ссылку дайте http://arduino.ru/Reference/AnalogWrite и все))) А изначально речь тут шла не за это. Просто приципились к тому что я пинами управляю этой функцией и сказали что типа не работает нет она работает просто не как ШИМ и все тут. Всего Вам хорошего!!!
Seltvik,
тебе умный человек написал, что analogWrite на эти пины не работает. Но analogWrite устроен так, что когда параметры 255 или 0 - он просто вызывает digitalWrite. Т.е. в твоём примере работает digitalWrite. Самый обыкновенный digitalWrite.
И какой ты бред несёшь о том, что тебе нужен именно analogWrite я не знаю. В твоём примере он из себя digitalWrite вызывает. Точно также как ты бы вызвал его сам.
И вообще расслабься. Тебе больше нравится на амперке? Вот и вали туда. Здесь ты уже всем показал, что ты полный неуч, да ещё и с апломбом. Ничего нового ты нам уже не скажешь. До свидания.
Ну каждый вмеру умен! вы то точно боги топиков_)))) Надо было просто сказать что в платформе Arduino IDE analogWrite вызывает функцию digitalWrite. Этог оя не знал. Да я изначально просто так сделал такие фукнции из за того что просто начал я с шим пинов и для аналоговых сделал как то тоже так же. Тупость моя да, но речь то про другое. Евгений просто сказал вообщем если прочтете его цитату то там говорится в общем. Так что вы просто все тут любите не посуществу. На амперке да мне по человечески сразу так и так проверь то и то. Тут нет надо людям скетч весь, и в тоже время не весь и т.д. и то исе и вообще ты неучь)))) Ну эт окак посмотреть я не топ умник по ARduino IDE, зато в других областях вроде не тупой))) Так что хорошего вам вечера! Спасибо что уделили свое бесценное время)
Писец упоротый :) Ему говорят - вот эта машина предназначена, чтобы копать траншеи, на трассе общего пользования ей не место. Тело в ответ - ну так колёса есть, хуле ей не ездить по трассе-то?
Знаю таких товарищей - хитрожопые донельзя, всегда пытаются выкрутиться и сохранить лицо.
Гений - прочитай описание к analogWrite - ты даже сылочку приводил. И осознай, что эта функция предназначена для ШИМ, поэтому своё предназначение она на аналоговых портах не выполняет, т.е. - не работает. Что и пытался сказать тебе ЕвгенийП.
А то, что для название функции тупое (уж лучше бы назвали pwmWrite), и тот факт, что создатели Wiring озаботились, чтобы она хоть что-то делала на любом пине, если обезьяна, написавшая скетч для своего проЭкта, не озаботилась чтением документации - не оправдывает идиотизма ситуации, в которую ты сам себя загнал.
Продолжай виться ужом, недоразумение.
З.Ы. Будешь борзеть тут - в следующий раз на хер пошлю. И не только я.
Мда... Даже не знаю как называть людей которые не могут пройти мима и хотят что то написать тут умное. кидать лишний раз камнем или еще чем потяжелее))) Просто без комментариев ребят. Вы тут ппц конечно. Не часто тут сижу но как то было раньше проще. Просто если вы все внимаетльно прочтете, вы поймете никто и не говорил о том, что я правильно делаю. это да я же с этим и не спорил(((( Просто я не понял слов Евгения и все он имел ввиду прямое назначения функции а я иммел ввиду то как я думал что и та и та будет давать логическую единицу как бы на порт. Но Вам все насрать! Я же написал что я понял. И да я профан отчасти в программирвоании. Мой косяк!
DIYMan, да ладно Вам, ну всё ж понятно. Человек - крутой спец, всех придурков и недоумков урыл и ткнул носом, ну и хрен с ним.
После того, как один тут доказывал, что можно и нужно использовать пин Reset 85-ой тиньки как ADC, и что мол типа всё работает, а другой - что можно арифметические действия в дефайне писать без скобок (и при том оба говорили, что оппоненты просто заучили догмы, без понимания, а мы мол всё понимаем и потому делаем как хотим, и у нас работает), меня уже ничего не удивляет, и желания с кем-то спорить и кого-то вразумлять нет. Ну, появился ещё один упоротый недоумок, у которого всё работает и чего? Мало ли их тут околачивалось? Ну, нравится человеку использовать analogWrite с крайними значениями вместо digital- и флаг ему в руки, пусть использует.
Евгений вы вот я туповат! в программировании. Но даже я понимаю что такую подачу надо поискать как у Вас. Вы раздули тут ужас что. Я уже извинился там выше и все равно одн ои тоже. ДА я вам показал ответ на вашу фразу что не работает функция, но это ведб не так! Она работает просто как другая и все. И меня это удивило. Почему она пашет вообще. Но тут человек мне объяснил что так и так что так было задумано. Что есть такой косяк у разработчиков и в этом мой промах. Я сразу ее написал она работала и я даже не вник сразу в то что это линее и лучше и нужн осдедать по другому. Так что не злитесь на меня=))) Да мы такие туповатые переодичсески тут появляемся))0 Так что еще раз всем спасибо и извините!!!!
Да, ради Бога, никто на Вас не злится, с чего Вы Вы взяли? Мне вообще как-то без разницы, тупой Вы или острый - мне то что? Ради Бога. Живите как хотите.
Гарик, это капец!!! ((с)Заповедник).
Гарик, это капец!!! ((с)Заповедник).
Ничо-ничо, у ТС всё работает!
У меня такой вопрос, как у человека никогда ранее не использовавшего Ардуино, но разбирающегося в контроллерах, ибо имел дело с ними через родную среду разработки: Вот откуда Вы взяли что пин 14 - это реальный вывод А0 микроконтроллера ? Есть какая то таблица соответствия ? Где ее можно посмотреть ?
Может быть просто почитать информацию на сайте об аналоговых и цифровых входах выходах?
http://arduino.ru/Tutorial/AnalogInputPins