к nano подключить больше 8 реле
- Войдите на сайт для отправки комментариев
Сб, 23/07/2016 - 14:06
На практике имею: на пинах d3-d9 все отлично. на d2 реле живет своей жизнью, т.е. иногда само включается/выключается. на d10 изначально светодиод реле светится, хотя оно в положении LOW. Программно выходы активирую
pinMode(v2, OUTPUT); digitalWrite(v2, HIGH); pinMode(v3, OUTPUT); digitalWrite(v3, HIGH);
и так далее.. Вот и можно ли реализовать использование 10 выходов? Спасибо
Приведите плз весь скетч.
От чего питаются реле ?
реле питаниются от внешнего БП 5 вольт. Скетчи разные, везде реализованно управление реле через веб а так же пингование хостов. Да даже просто банально делал простой пример, и просто назначал разные выходы, и результат тот же. с 3 по 9 все ок, а вот остальные беда
Давайте я ещё раз вас попрошу: выложите плз минимальный тестовый скетч, на котором у вас наблюдается данное поведение.
с D2 похоже разобрался. Проблема была действительно в скетче. Загрузил старый скетч, который написано по другому алгоритму - проблем нет. А вот что подскажите с d10,11 ? Они при любых условиях не работают у меня :(
Давайте я в третий раз повторю: выложите пожалуйста сюда исходный код проблемного скетча. Больше просить не буду - оно надо вам, а не мне. Не хотите помощи - ок, напрягаться не буду. Ответ на ваш вопрос один: проблема у вас в скетче.
#include <dnslkup.h> #include <enc28j60.h> #include <EtherShield.h> #include <ip_arp_udp_tcp.h> #include <ip_config.h> #include <net.h> #include <websrv_help_functions.h> // A simple web server to turn 2 LED on or off #include "etherShield.h" #include "ETHER_28J60.h" int outputPin = 2; // LED1 to pin 6 int anotherOutputPin = 3; // LED2 to pin 7 int anotherOutputPin5 = 4; // LED2 to pin 5 int anotherOutputPin9 = 5; // LED2 to pin 9 static uint8_t mac[6] = { 0x54, 0x55, 0x58, 0x10, 0x00, 0x24}; // this just needs to be unique for your network, static uint8_t ip[4] = { 192, 168, 100, 222}; // IP address for the webserver static uint16_t port = 80; // Use port 80 - the standard for HTTP ETHER_28J60 e; void setup() { e.setup(mac, ip, port); pinMode(outputPin, OUTPUT); pinMode(anotherOutputPin, OUTPUT); pinMode(anotherOutputPin5, OUTPUT); pinMode(anotherOutputPin9, OUTPUT); digitalWrite(anotherOutputPin9, HIGH); digitalWrite(anotherOutputPin5, HIGH); digitalWrite(anotherOutputPin, HIGH); digitalWrite(outputPin, HIGH); } void loop() { char* params; if (params = e.serviceRequest()) { e.print("<h1><a href='/?led1=on&led2=on'>Arduino Web Remote</a></h1>"); e.print("<h1><a href='/?led5'>Reset1</a></h1>"); e.print("<h1><a href='/?led9'>Reset2</a></h1>"); if (strcmp(params, "?led5") == 0) { digitalWrite(anotherOutputPin5, LOW); delay(30); digitalWrite(anotherOutputPin5, HIGH); } if (strcmp(params, "?led9") == 0) { digitalWrite(anotherOutputPin9, LOW); delay(30); digitalWrite(anotherOutputPin9, HIGH); } if (strcmp(params, "?led1=on&led2=off") == 0) { digitalWrite(outputPin, HIGH); digitalWrite(anotherOutputPin, LOW); e.print("<a href='?led1=off&led2=off'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>POWER ON</button></a><a href='?led1=on&led2=on'><br/><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>POWER IS OFF</button></a>"); } else if (strcmp(params, "?led1=off&led2=on") == 0) { digitalWrite(outputPin, LOW); digitalWrite(anotherOutputPin, HIGH); e.print("<a href='?led1=on&led2=on'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>POWER OFF</button></a><a href='?led1=off&led2=off'><br/><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>POWER IS ON</button></a>"); } else if (strcmp(params, "?led1=off&led2=off") == 0) { digitalWrite(outputPin, LOW); digitalWrite(anotherOutputPin, LOW); e.print("<a href='?led1=on&led2=off'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>POWER OFF</button></a><a href='?led1=off&led2=on'><br/><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>POWER IS OFF</button></a>"); } else if (strcmp(params, "?led1=on&led2=on") == 0) { digitalWrite(outputPin, HIGH); digitalWrite(anotherOutputPin, HIGH); e.print("<a href='?led1=off&led2=on'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>POWER ON</button></a><a href='?led1=on&led2=off'><br/><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>POWER IS ON</button></a>"); } e.respond(); } }Внимание, вопрос: а какие пины для своей работы использует ETHER_28J60? Подозреваю, что работает сие через SPI, следовательно пины 10, 11, 12, 13 (или 8, 11, 12, 13) - заняты под нужды SPI.
Я ответил на ваш вопрос о том, почему реле на этих пинах не работает, как надо?
Большое спасибо!!!