Три фотодиода
- Войдите на сайт для отправки комментариев
Ср, 07/10/2015 - 20:47
Приветствую всех, требуестся использовать 3 фотодиода для управления тремя реле. С скетчем который ниже при подаче сигнала на любой из 3х портов "А" включаются все реле. Подскажите что не так
int pinA1 = 1; int ledPin1 = 11; int pinA2 = 2; int ledPin2 = 12; int pinA3 = 3; int ledPin3 = 13; void setup() { pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); analogReference(DEFAULT); } void loop() { int val1 = analogRead(pinA1); val1 = constrain(val1, 100, 200); int ledLevel1 = map(val1, 100, 200, 0, 255); digitalWrite(ledPin1, ledLevel1); int val2 = analogRead(pinA2); val2 = constrain(val2, 100, 200); int ledLevel2 = map(val2, 100, 200, 0, 255); digitalWrite(ledPin2, ledLevel2); int val3 = analogRead(pinA3); val3 = constrain(val3, 100, 200); int ledLevel3 = map(val3, 100, 200, 0, 255); digitalWrite(ledPin3, ledLevel3); }
Второй параметр digitalWrite какой должен быть? А Вы что туда пихнули?
Функция digitalWrite работает с HIGH и LOW в качестве второго аргумента, поэтому constrain() и map() тут излишни.
Напишите проще:
Я не понял для чего такой огород с map и constrain ради digitalWrite(), которой нужно всего-то 0 или 1.
Что же до Вашего вопроса - выведите в Serial свои val и ledLevel - узнаете много интересного.
И вообще, прежде чем писать на форум всегда выведите переменные, посмотрите на них, подумайте. Глядишь, и писать не придётся.
Ничего не изменилось
Все ответы равны "БЛА БЛА БЛА", скетч который выложен в посте переписанный под один канал работает и с map и с полигон, но если увеличить число каналов таким способом как это сделал я то мы получим все три аналоговых входа как единое целое, и выходы станут такими же! Про serial тоже бомба блеснул так блеснул! Вопрос в другом, как сделать это иначе?
Вы Выводили в Serial то, что возвращают analogRead, как я Вам советовал? Нет? Хотите работать вслепую, с завязанными глазами? Ну, удачи :)
Все ответы равны "БЛА БЛА БЛА"
Успехов Вам.
val=0 и с сигналом =1024
ledLevel=100 c сигналом=200
Схему проверьте. В скетче нет ничего такого, что заставляло бы срабатывать все три реле от одного фотодиода.
И замечания дельные были. Хоть скетчи оба будут работать, но второй хоть логически правильный.
В схеме то и проверять не чего, ардуина, блок реле, фотодиод + 10k на vcc
а по первому скетчу так это остатки попыток заменить фотодиоды переменниками
jpg10, вы так хорошо здесь всех по местам расставили, даже непонятно зачем с такой гениальностью вопросы задавать. Вам ЕвгенийП не зря про Serial писал. С чего вы уверены, что АЦП успевает отрабатывать с трех источников?
val=0 и с сигналом =1024
ledLevel=100 c сигналом=200
))) если так зачем тут analogread. сигнал то цифровой получается на входе
да и что за analogread на пине без ацп?))) чудеса да и только. ТС тупит не по детски
да и что за analogread на пине без ацп?)))
Почему на пине без АЦП?
Syntax analogRead(pin)
Parameters pin: the number of the analog input pin to read from (0 to 5 on most boards, 0 to 7 on the Mini and Nano, 0 to 15 on the Mega)
Вопрос только, к каким пина ТС подключал фотодиоды - к аналоговым или цифровым?
#define pinA1 A1 // и так далее
или в лупе сразу и прямо писать: analogRead (A1)
#define pinA1 A1 // и так далее
Не обязательно. В недрах ардуины есть такие записи:
#define analogInputToDigitalPin(p) ((p < 6) ? (p) + 14 : -1)
и например static const uint8_t A1 = 15;
т.е. получается в analogRead можно писать и A1 и 1
ок. раз так и ты так хорошо знаешь как объяснишь это:
ок. раз так и ты так хорошо знаешь как объяснишь это:
почему бы и нет, попробую
но повторюсь, хоть оно и рабочее но какое-то извращенное
или ты просил объяснить поведение автора, когда он придумал этот код? тут я пас )))
а зачем диапазон 0-255 если используешь digiralWrite у которого только 2 возможных варианта 0 или 1 . что теперь скажешь? фактически 2 и 3 строка бесполезны. просто условие поставить выше порога то 1 на выходе, иначе 0
блин а тс то другой)))
Сие творение называется индусским кодом.
Подскажите что не так
Руки БЛА из ж...ы растут и ума БЛА не хватает, а в остальном все БЛА так.
Столько гениального сблёва, что глаза на лоб лезут!!! Всего лиш vk007 дал точный ответ что код работать будет и ошибка в железе, а все остальные БЛА БЛА БЛА!!!!! Проблема былы в ардуине, на другой плате все пошло и с кривым и с косым. Господа ПРОГРАММНЫЙ МУСОР оставьте свою изжогу для ЖЕНЫ!!!
какой нервный. написал странный код и еще удивляется критике