Desculpe esqueci de te enviar, esse código é da Válvula.
https://www.run-xin.com/index.php/content/Search?query=63515&x=0&y=0&catId=11&siteId=2
Runxin, válvula de 15m³ l/h
aídas do arduino.
Mas imaginando em caso real percebi um problema. Cada conjunto de 10 LED representa um painel que deve ficar distante um dos outros, onde para cada conjunto deste eu deveria levar do Arduino para o painel, um cabo com 20 fios.
A ideia que surgiu foi a de criar 4 grupo do CI74HC595 junto com cada painéis e levar apenas os 3 fios necessário para comanda-los + 2 de alimentação.
Ai surgiu um novo problema, NÃO ESTOU CONSEGUINDO fazer a biblioteca ShiftOutMega realizar o processamento de vários grupos de CI74HC595.
Longe de chegar perto de um experto na programação de biblioteca, mas cheguei alterar seus códigos, que copilou sem erro, mas também não deu resultado positivo.
Posto aqui um código como se fosse apenas dois painéis, mas que já mostra o problema que está ocorrendo.
No código abaixo estou usando apenas uma biblioteca, mas segue a outra modifiquei, em anexo, mas que também não funcionou usando as duas.
Segue em anexo o esquema de ligação para utilização do CI74HC595 e o também o código.
Link do vídeo: https://youtu.be/YXd9wnnRCY8
Segue abaixo o código com comentários
/*--------------------------------------------- S H I F T O U T M E G A Ampliar o número de saídas do Arduino com Registrador de Deslocamento 74HC595 Fellipe Couto - 17/09/2012 --------------------------------------------*/ /*¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ - Pino 2 do Arduino ligado ao pino 12 do CI. - Pino 3 do Arduino ligado ao pino 14 do CI. - Pino 4 do Arduino ligado ao pino 11 do CI. - Pinos 10 e 16 do CI ligados ao Vcc. - Pinos 8 e 13 do CI ligados ao GND. - Pino 9 do CI ligado ao pino 14 do próximo CI. ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨*/ #include <ShiftOutMega.h> //Inclui a bilioteca ShiftOutMega.h
//Variáveis do CI 74HC595 PAINEL-1 int latchPin = 2; int dataPin = 3; int clockPin = 4; int qtdRegistradores = 3; //Quantidade de registradores(74HC595) utilizado no pro jeto. ShiftOutMega mega1(latchPin, dataPin, clockPin, qtdRegistradores); //Inicia a biblioteca passando os parametros de uso.
//Variáveis do CI 74HC595 PAINEL-2 int latchPin2 = 5; int dataPin2 = 6; int clockPin2 = 7; int qtdRegistradores2 = 3; //Quantidade de registradores(74HC595) utilizado no pro jeto. ShiftOutMega mega2(latchPin2, dataPin2, clockPin2, qtdRegistradores2); //Inicia a biblioteca passando os parametros de uso.
void painelVD1 () { //1º Painel VERDE mega1.shiftWrite(1, HIGH); //Ligando painel verde 1 mega1.shiftWrite(2, HIGH); mega1.shiftWrite(3, HIGH); mega1.shiftWrite(4, HIGH); mega1.shiftWrite(5, HIGH); mega1.shiftWrite(6, HIGH); mega1.shiftWrite(7, HIGH); mega1.shiftWrite(8, HIGH); mega1.shiftWrite(9, HIGH); mega1.shiftWrite(10, HIGH); delay(1000);
mega1.shiftWrite(1, LOW); //Desligando painel verde 1 delay(1000); mega1.shiftWrite(2, LOW); delay(1000); mega1.shiftWrite(3, LOW); delay(1000); mega1.shiftWrite(4, LOW); delay(1000); mega1.shiftWrite(5, LOW); delay(1000); mega1.shiftWrite(6, LOW); delay(1000); mega1.shiftWrite(7, LOW); delay(1000); mega1.shiftWrite(8, LOW); delay(1000); mega1.shiftWrite(9, LOW); delay(1000); mega1.shiftWrite(10, LOW); delay(1000); }
void painelVM1 () { //1º Painel VERMELHO mega1.shiftWrite(11, HIGH); //Ligando painel vermelho 1 mega1.shiftWrite(12, HIGH); mega1.shiftWrite(13, HIGH); mega1.shiftWrite(14, HIGH); mega1.shiftWrite(15, HIGH); mega1.shiftWrite(16, HIGH); mega1.shiftWrite(17, HIGH); mega1.shiftWrite(18, HIGH); mega1.shiftWrite(19, HIGH); mega1.shiftWrite(20, HIGH); delay(1000);
mega1.shiftWrite(11, LOW); //Desligando painel vermelho 1 delay(1000); mega1.shiftWrite(12, LOW); delay(1000); mega1.shiftWrite(13, LOW); delay(1000); mega1.shiftWrite(14, LOW); delay(1000); mega1.shiftWrite(15, LOW); delay(1000); mega1.shiftWrite(16, LOW); delay(1000); mega1.shiftWrite(17, LOW); delay(1000); mega1.shiftWrite(18, LOW); delay(1000); mega1.shiftWrite(19, LOW); delay(1000); mega1.shiftWrite(20, LOW); delay(1000); }
void painelVD2 () { //2º Painel VERDE mega2.shiftWrite(1, HIGH); //Ligando painel verde 2 mega2.shiftWrite(2, HIGH); mega2.shiftWrite(3, HIGH); mega2.shiftWrite(4, HIGH); mega2.shiftWrite(5, HIGH); mega2.shiftWrite(6, HIGH); mega2.shiftWrite(7, HIGH); mega2.shiftWrite(8, HIGH); mega2.shiftWrite(9, HIGH); mega2.shiftWrite(10, HIGH); delay(1000);
mega2.shiftWrite(1, LOW); //Desligando painel verde 2 delay(1000); mega2.shiftWrite(2, LOW); delay(1000); mega2.shiftWrite(3, LOW); delay(1000); mega2.shiftWrite(4, LOW); delay(1000); mega2.shiftWrite(5, LOW); delay(1000); mega2.shiftWrite(6, LOW); delay(1000); mega2.shiftWrite(7, LOW); delay(1000); mega2.shiftWrite(8, LOW); delay(1000); mega2.shiftWrite(9, LOW); delay(1000); mega2.shiftWrite(10, LOW); delay(1000); }
void painelVM2 () { //2º Painel VERMELHO mega2.shiftWrite(11, HIGH); //Ligando painel vermelho 2 mega2.shiftWrite(12, HIGH); mega2.shiftWrite(13, HIGH); mega2.shiftWrite(14, HIGH); mega2.shiftWrite(15, HIGH); mega2.shiftWrite(16, HIGH); mega2.shiftWrite(17, HIGH); mega2.shiftWrite(18, HIGH); mega2.shiftWrite(19, HIGH); mega2.shiftWrite(20, HIGH); delay(1000);
mega2.shiftWrite(11, LOW); //Desligando painel vermelho 2 delay(1000); mega2.shiftWrite(12, LOW); delay(1000); mega2.shiftWrite(13, LOW); delay(1000); mega2.shiftWrite(14, LOW); delay(1000); mega2.shiftWrite(15, LOW); delay(1000); mega2.shiftWrite(16, LOW); delay(1000); mega2.shiftWrite(17, LOW); delay(1000); mega2.shiftWrite(18, LOW); delay(1000); mega2.shiftWrite(19, LOW); delay(1000); mega2.shiftWrite(20, LOW); delay(1000); } void painelVD1eVM2 () { //1º Painel VERDE mega1.shiftWrite(1, HIGH); // LIGANDO Painel verde 1 mega1.shiftWrite(2, HIGH); mega1.shiftWrite(3, HIGH); mega1.shiftWrite(4, HIGH); mega1.shiftWrite(5, HIGH); mega1.shiftWrite(6, HIGH); mega1.shiftWrite(7, HIGH); mega1.shiftWrite(8, HIGH); mega1.shiftWrite(9, HIGH); mega1.shiftWrite(10, HIGH); mega2.shiftWrite(11, HIGH); //LIGANDO Painel vermelho 2 mega2.shiftWrite(12, HIGH); mega2.shiftWrite(13, HIGH); mega2.shiftWrite(14, HIGH); mega2.shiftWrite(15, HIGH); mega2.shiftWrite(16, HIGH); mega2.shiftWrite(17, HIGH); mega2.shiftWrite(18, HIGH); mega2.shiftWrite(19, HIGH); mega2.shiftWrite(20, HIGH); delay(1000); //ATÉ AQUI FUNCIONA NORMAL //ERRO NA PARTE ABAIXO!!! a parte que inicia DESLIGAR da os dois grupos de LED, um a um, //faz é LIGAR o VERDE e VERMELHO em todos LED, para depois ir DESLIGANDO
mega1.shiftWrite(1, LOW); //DESLIGANDO Painel verde mega2.shiftWrite(11, LOW); //DESLIGANDO Painel vermelho 2 delay(1000); mega1.shiftWrite(2, LOW); mega1.shiftWrite(12, LOW); delay(1000); mega1.shiftWrite(3, LOW); mega1.shiftWrite(13, LOW); delay(1000); mega1.shiftWrite(4, LOW); mega1.shiftWrite(14, LOW); delay(1000); mega1.shiftWrite(5, LOW); mega1.shiftWrite(15, LOW); delay(1000); mega1.shiftWrite(6, LOW); mega1.shiftWrite(16, LOW); delay(1000); mega1.shiftWrite(7, LOW); mega1.shiftWrite(17, LOW); delay(1000); mega1.shiftWrite(8, LOW); mega1.shiftWrite(18, LOW); delay(1000); mega1.shiftWrite(9, LOW); mega1.shiftWrite(19, LOW); delay(1000); mega1.shiftWrite(10, LOW); mega1.shiftWrite(20, LOW); delay(1000); }
//FUNCIONA NORMAL A PARTE ABAIXO PARA LIGAR OS DOIS GRUPOS DE LED
void painelVD2eVM1 () { //2º Painel VERDE mega2.shiftWrite(1, HIGH); //DESLIGAR painel verde 2 mega2.shiftWrite(2, HIGH); mega2.shiftWrite(3, HIGH); mega2.shiftWrite(4, HIGH); mega2.shiftWrite(5, HIGH); mega2.shiftWrite(6, HIGH); mega2.shiftWrite(7, HIGH); mega2.shiftWrite(8, HIGH); mega2.shiftWrite(9, HIGH); mega2.shiftWrite(10, HIGH); mega1.shiftWrite(11, HIGH); //LIGANDO painel vermelho 1 mega1.shiftWrite(12, HIGH); mega1.shiftWrite(13, HIGH); mega1.shiftWrite(14, HIGH); mega1.shiftWrite(15, HIGH); mega1.shiftWrite(16, HIGH); mega1.shiftWrite(17, HIGH); mega1.shiftWrite(18, HIGH); mega1.shiftWrite(19, HIGH); mega1.shiftWrite(20, HIGH); delay(1000);
//ERRO NA PARTE ABAIXO, a parte que inicia DESLIGAR da os dois grupos de LED, um a um, faz é LIGAR o VERDE e VERMELHO em todos LED, para depois ir DESLIGANDO mega2.shiftWrite(1, LOW); //DESLIGAR painel verde 2 mega1.shiftWrite(11, LOW); //DESLIGAR painel vermelho 1 delay(1000); mega2.shiftWrite(2, LOW); mega1.shiftWrite(12, LOW); delay(1000); mega2.shiftWrite(3, LOW); mega1.shiftWrite(13, LOW); delay(1000); mega2.shiftWrite(4, LOW); mega1.shiftWrite(14, LOW); delay(1000); mega2.shiftWrite(5, LOW); mega1.shiftWrite(15, LOW); delay(1000); mega2.shiftWrite(6, LOW); mega1.shiftWrite(16, LOW); delay(1000); mega2.shiftWrite(7, LOW); mega1.shiftWrite(17, LOW); delay(1000); mega2.shiftWrite(8, LOW); mega1.shiftWrite(18, LOW); delay(1000); mega2.shiftWrite(9, LOW); mega1.shiftWrite(19, LOW); delay(1000); mega2.shiftWrite(10, LOW); mega1.shiftWrite(20, LOW); delay(1000); } void setup() { } void loop() { painelVD1 (); painelVM1 (); painelVD2 (); painelVM2 (); painelVD1eVM2 (); painelVD2eVM1 (); }…
Adicionado por RuyterCB ao 22:10 em 25 outubro 2015
SD card using the SPI bus (through the ICSP header). This is on digital pins 11, 12, and 13 on the Duemilanove and pins 50, 51, and 52 on the Mega. On both boards, pin 10 is used to select the W5100 and pin 4 for the SD card. These pins cannot be used for general i/o. On the Mega, the hardware SS pin, 53, is not used to select either the W5100 or the SD card, but it must be kept as an output or the SPI interface won't work."
Com o descritivo acima conclui-se que os pinos 4, 10, 11, 12 e 13 não poderão ser utilizados. Restando apenas os pinos 2, 3, 5, 6, 7, 8, 9, A0, A1, A2, A3, A4 e A5 para trabalharmos no projeto.
Att.
Eduardo.
…
controlled by Timer2
On the Arduino Mega we have 6 timers and 15 PWM outputs:
Pins 4 and 13: controlled by Timer0
Pins 11 and 12: controlled by Timer1
Pins 9 and10: controlled by Timer2
Pin 2, 3 and 5: controlled by timer 3
Pin 6, 7 and 8: controlled by timer 4
Pin 46, 45 and 44:: controlled by timer 5
Fonte: http://blog.oscarliang.net/arduino-timer-and-interrupt-tutorial/
Rui…
Adicionado por mineirin RV ao 18:50 em 28 março 2016
10, 7, 11, 12) ele coloca estes pinos em HIGT.... neste código do poste me parece q os quatro pinos são iguais a SUB tanto em HIGT como em LOW, e neste caso não é possível usa los na variável DES... elas só podem ser = quando for HIGT.
Agradeço a todos pela atenção!
…