Usei praticamente o mesmo código fonte do post Sequencial de LEDs, porém nesse esta incluído a
A alteração mais significativa no código foi alterar o controle de acionamento dos Leds, onde foi substituído o digitalWrite() pela função mega.shiftWrite() da biblioteca.
Para informações sobre a biblioteca:
http://www.efeitonerd.com.br/2012/09/ampliar-saidas-do-arduino-library.html
O circuito é composto por um Arduino, onde usamos somente 3 saídas, 4 registradores 74HC595, e mais 30 Leds com seus respectivos resistores de 220 ohms.
Segue uma foto dos registradores, a imagem do esquema elétrico, e o código fonte.
That's all folks!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 | /*--------------------------------------------------------- Programa : SUPER SEQUENCIAL DE LEDS Autor : Fellipe Couto [ http://www.efeitonerd.com.br ] Data : 19/09/2012 ---------------------------------------------------------*/ //Inclui a bilioteca ShiftOutMega #include <ShiftOutMega.h> //Variáveis de uso dos registradores 74HC595 int latchPin = 8; //Pino 8 conectado ao pino 12 do 74HC595 (Latch). int dataPin = 11; //Pino 11 conectado ao pino 14 do 74HC595 (Data). int clockPin = 12; //Pino 12 conectado ao pino 11 do 74HC595 (Clock). //Quantidade de registradores (74HC595). Para cada registrador, temos 8 saídas. int qtdRegistradores = 4; int totalSaidas = 30; //Até 32 saídas com 4 registradores. int totalSequencias = 10; int led[] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30}; //Pinos dos leds. //Inicia a biblioteca passando os parametros de uso. ShiftOutMega mega(latchPin, dataPin, clockPin, qtdRegistradores); void setup(){ } void loop(){ for (int i=1; i<=totalSequencias; i++){ for (int j=0; j<3; j++){ sequencia(i); } } } //------------------------------ void sequencia(int s){ switch (s){ case 1: s1(); break; case 2: s2(); break; case 3: s3(); break; case 4: s4(); break; case 5: s5(); break; case 6: s6(); break; case 7: s7(); break; case 8: s8(); break; case 9: s9(); break; case 10: s10(); break; } } //------------------------------ void AcendeTodos(){ for (int i=0; i<totalSaidas; i++){ mega.shiftWrite(led[i],HIGH); } } //------------------------------ void ApagaTodos(){ for (int i=0; i<totalSaidas; i++){ mega.shiftWrite(led[i],LOW); } } //------------------------------ void s1(){ int t1 = 10; ApagaTodos(); //Acende um por um. for (int i=0; i<totalSaidas; i++){ mega.shiftWrite(led[i],HIGH); delay(t1); } //Apaga um por um. for (int i=0; i<totalSaidas; i++){ mega.shiftWrite(led[i],LOW); delay(t1); } } //------------------------------ void s2(){ int t1 = 10; ApagaTodos(); //Acende um por um. for (int i=0; i<totalSaidas; i++){ mega.shiftWrite(led[i],HIGH); delay(t1); } //Apaga um por um. for (int i=0; i<totalSaidas-1; i++){ mega.shiftWrite(led[i],LOW); delay(t1); } //Acende um por um. (inverso) for (int i=totalSaidas-1; i>=0; i--){ mega.shiftWrite(led[i],HIGH); delay(t1); } //Apaga um por um. (inverso) for (int i=totalSaidas-1; i>0; i--){ mega.shiftWrite(led[i],LOW); delay(t1); } } //------------------------------ void s3(){ //ABRE E FECHA. int t1 = 10; ApagaTodos(); for (int i=0; i<totalSaidas/2; i++){ mega.shiftWrite(led[i],HIGH); mega.shiftWrite(led[totalSaidas-1-i],HIGH); delay(t1); } for (int i=0; i<(totalSaidas/2)-1; i++){ mega.shiftWrite(led[i],LOW); mega.shiftWrite(led[totalSaidas-1-i],LOW); delay(t1); } for (int i=(totalSaidas/2)-2; i>=0; i--){ mega.shiftWrite(led[i],HIGH); mega.shiftWrite(led[totalSaidas-1-i],HIGH); delay(t1); } for (int i=(totalSaidas/2)-1; i>0; i--){ mega.shiftWrite(led[i],LOW); mega.shiftWrite(led[totalSaidas-1-i],LOW); delay(t1); } } //------------------------------ void s4(){ //POLÍCIA int t1 = 1; ApagaTodos(); //Lado 1 acesso. (piscando) for (int j=0; j<totalSaidas/4; j++){ for (int i=0; i<totalSaidas/2; i++){ mega.shiftWrite(led[i],HIGH); } delay(t1); for (int i=0; i<totalSaidas/2; i++){ mega.shiftWrite(led[i],LOW); } delay(t1); } //Lado 2 acesso. (piscando) for (int j=0; j<totalSaidas/4; j++){ for (int i=totalSaidas/2; i<totalSaidas; i++){ mega.shiftWrite(led[i],HIGH); } delay(t1); for (int i=totalSaidas/2; i<totalSaidas; i++){ mega.shiftWrite(led[i],LOW); } delay(t1); } } //------------------------------ void s5(){ //FLASHS UM POR UM int t1 = 5; int t2 = 50; ApagaTodos(); for (int i=0; i<totalSaidas; i++){ mega.shiftWrite(led[i],HIGH); delay(t1); mega.shiftWrite(led[i],LOW); delay(t2); } } //------------------------------ void s6(){ //FLASHS RANDOMICOS randomSeed(analogRead(0)); //Para o random nao repetir a sequencia. int t1 = 10; int t2 = 40; int p = random(totalSaidas); ApagaTodos(); for (int i=0; i<35; i++){ mega.shiftWrite(led[p],HIGH); delay(t1); mega.shiftWrite(led[p],LOW); delay(t2); p = random(totalSaidas); } } //------------------------------ void s7(){ int t1 = 1; for (int i=0; i<2; i++){ AcendeTodos(); delay(t1); ApagaTodos(); delay(500); } } //------------------------------ void s8(){ //CORRE NUM EFEITO MEIO 3D. :) int t1 = 10; ApagaTodos(); for (int i=1; i<totalSaidas; i++){ mega.shiftWrite(led[i-2],LOW); mega.shiftWrite(led[i-1],LOW); mega.shiftWrite(led[i],HIGH); delay(t1); mega.shiftWrite(led[i],LOW); mega.shiftWrite(led[i-1],HIGH); delay(t1); } } //------------------------------ void s9(){ int t1 = 100; for (int x=0; x<3; x++){ for (int i=0; i<totalSaidas; i++){ if (i%2 == 0){ mega.shiftWrite(led[i],HIGH); } else{ mega.shiftWrite(led[i],LOW); } } delay(t1); for (int i=0; i<totalSaidas; i++){ if (i%2 == 0){ mega.shiftWrite(led[i],LOW); } else{ mega.shiftWrite(led[i],HIGH); } } delay(t1); } } //------------------------------ void s10(){ int t1 = 3; int t2 = 100; ApagaTodos(); delay(t2); for (int x=0; x<totalSaidas; x++){ for (int i=0; i<totalSaidas-x; i++){ if (i != 0){ mega.shiftWrite(led[i-1],LOW); } mega.shiftWrite(led[i],HIGH); delay(t1); } } delay(t1); mega.shiftWrite(led[0],HIGH); delay(t2); for (int x=0; x<totalSaidas; x++){ for (int i=0; i<totalSaidas-x; i++){ if (i != 0){ mega.shiftWrite(led[i-1],HIGH); } mega.shiftWrite(led[i],LOW); delay(t1); } } delay(t1); mega.shiftWrite(led[0],LOW); delay(t1); } |
Mandou bem com essa lib. parabéns!
ResponderExcluirmeu amigo essa vc foi foda..quanto custaria pra vc mandar pronto para min ja montado.pois em meu estado (macapa)tudo e dificil encontrar peças para montar um.meu telefone (96)32232096 - haroldo feio.
ResponderExcluirBoa Amigão! vc tem como mandar um Arduino gravado com este código fonte? vê ai o valor e conta para deposito. obrigado.
ResponderExcluirBoa tarde, Edson!
ExcluirEu não trabalho com vendas de Arduino. Dois sites que recomendo para compra: http://loja.labdegaragem.com.br e http://www.robocore.net
Abraços!!!
Felipe boa noite, quanto quer para montar esta sequencial? da para montar uma para mim?
ResponderExcluirEdson, boa tarde!
ExcluirEu não trabalho com vendas. O tempo ta curto pra esse tipo de coisa. Mas, o código por completo é esse mesmo que postei, e o circuito elétrico também. Qualquer dúvida na montagem, pode sempre escrever pra mim.
Abraços!
tem como me enviar uma foto do seu projeto montado?
ResponderExcluirpara o email mt_x@hotmail.com
Boa tarde, Marco Túlio!
ExcluirEsse projeto fiz a montagem somente no protoboard para postagem no blog.
Abraços!
Boa Tarde, sabe me dizer se esta biblioteca seria compativel com o Attiny?
ResponderExcluirBoa noite, Lucas!
ExcluirNão sei informar. Nunca testei, mas acredito que funcione sim.
Abraços!
Ola felipe, quando executo a compilação do código, esta gerando o seguinte erro:
ResponderExcluir'ShiftOutMega' does not name a type
nesta linha:
//Inicia a biblioteca passando os parametros de uso.
ShiftOutMega mega(latchPin, dataPin, clockPin, qtdRegistradores);
segue o erro completo:
SHIFT_OU_2:23: error: 'ShiftOutMega' does not name a type
SHIFT_OU_2.ino: In function 'void AcendeTodos()':
SHIFT_OU_2:75: error: 'mega' was not declared in this scope
SHIFT_OU_2.ino: In function 'void ApagaTodos()':
SHIFT_OU_2:82: error: 'mega' was not declared in this scope
SHIFT_OU_2.ino: In function 'void s1()':
SHIFT_OU_2:92: error: 'mega' was not declared in this scope
SHIFT_OU_2:97: error: 'mega' was not declared in this scope
SHIFT_OU_2.ino: In function 'void s2()':
SHIFT_OU_2:108: error: 'mega' was not declared in this scope
SHIFT_OU_2:113: error: 'mega' was not declared in this scope
SHIFT_OU_2:118: error: 'mega' was not declared in this scope
SHIFT_OU_2:123: error: 'mega' was not declared in this scope
SHIFT_OU_2.ino: In function 'void s3()':
SHIFT_OU_2:134: error: 'mega' was not declared in this scope
SHIFT_OU_2:139: error: 'mega' was not declared in this scope
SHIFT_OU_2:144: error: 'mega' was not declared in this scope
SHIFT_OU_2:149: error: 'mega' was not declared in this scope
SHIFT_OU_2.ino: In function 'void s4()':
SHIFT_OU_2:163: error: 'mega' was not declared in this scope
SHIFT_OU_2:167: error: 'mega' was not declared in this scope
SHIFT_OU_2:174: error: 'mega' was not declared in this scope
SHIFT_OU_2:178: error: 'mega' was not declared in this scope
SHIFT_OU_2.ino: In function 'void s5()':
SHIFT_OU_2:191: error: 'mega' was not declared in this scope
SHIFT_OU_2.ino: In function 'void s6()':
SHIFT_OU_2:207: error: 'mega' was not declared in this scope
SHIFT_OU_2.ino: In function 'void s8()':
SHIFT_OU_2:232: error: 'mega' was not declared in this scope
SHIFT_OU_2.ino: In function 'void s9()':
SHIFT_OU_2:248: error: 'mega' was not declared in this scope
SHIFT_OU_2:251: error: 'mega' was not declared in this scope
SHIFT_OU_2:257: error: 'mega' was not declared in this scope
SHIFT_OU_2:260: error: 'mega' was not declared in this scope
SHIFT_OU_2.ino: In function 'void s10()':
SHIFT_OU_2:276: error: 'mega' was not declared in this scope
SHIFT_OU_2:278: error: 'mega' was not declared in this scope
SHIFT_OU_2:283: error: 'mega' was not declared in this scope
Alguma sugestão para resolver!
Obrigado e parabens pelo post!
Alexandre
Bom dia, Alexandre!
ExcluirEsse erro ta parecendo que não ta localizando a biblioteca. A pasta da biblioteca ShiftOutMega está dentro da pasta libraries do Arduino?!
Abraços!!
Isso mesmo!! Coisa boba, rs!!
ExcluirSó foi trocar a pasta dos arquivos!!
Valeu!
Fellipe, é possivel eu controlar essa linha de leds, a partir de algum software? ao vivo, sem a necessidade de pré-programar os efeitos?
ResponderExcluirValeu!
Abs
Alexandre, é possível sim!
ExcluirTe respondi no e-mail.
Abraços!
Este comentário foi removido pelo autor.
Excluirfillipe boa noite;
ResponderExcluircaro amigo tenho o arduino uno r3 , pode sincronizar esse codigo nele;
tem jeito esta dando varios error;;;
abração ;parabens é um dos melhores;;;
Rodrigo, esse fonte roda no UNO r3 sim! Só ligar o CI 74HC595 conforme o esquema elétrico que funciona normalmente.
ExcluirQual erro está acontecendo?
Obrigado pelo elogio ao blog!
Abraços!!
FELIPE BOA TARDE ; OBRIGADO; PELA RESPOSTA;
ExcluirAMIGO ESTA DANDO ISSO;
`SHIFTOUTMEGA`DOIS NOT NAME A TYPE;
ESTOU SELECIONANDO DESDO COMENTARIO ; AI CTRL-C E CTRL-V NO PROGRAMA;
TENTEI DE TUDO MAS NÃO ESTOU TENDO SUCESSO;
ABRAÇÃO-RODRIGO SOARES;
Dia!!! Esse erro é da biblioteca. Ela está na pasta do arduino certinho?! Vc precisa baixa-la, e colocar dentro da pasta libraries do diretório do Arduino.
ExcluirLink para download: http://www.4shared.com/rar/QSUfwzo4/ShifOutMega.html
AMIGO SEM SECESSO;
ResponderExcluirMAS ME DÁ UMA DICA AÍ ; O EFEITO 9 DOS LED NOS 38 SEGUNDOS DO VIDEO;
TEM COMO REPRODUZIR SOMENTE ELE; Q DEVO FAZER;
OBRIGADO;
Rodrigo, os efeitos são definidos um a um em cada função.
Excluirvoid s1()... é a seguencia 1. s2() é a sequencia 2. Dentro do loop principal do arduino, coloquei um For (loop) onde faz a contagem, chamando as seguencias, uma por uma. Ali vc pode modificar para chamar somentes as sequencias que quiser, e até incluir sequencias novas.
Abraços!!!
FELIPE OBRIGADO PELO APOIO ;
ResponderExcluirAS COISAS AQUI ESTÃO FUMEGANDO; SÓ STOU ESPERANDO CHEGAR OS 74HC595;
NO void sequencia(int s){ APAQUEI AS SEQUNCIAS QUE NÃO QUERIA;
COMPILEI NÃO DEU NENHUN ERROR; SERÁ QUE ESTOU CERTO;;
MUITO OBRIGADO MESMO ;
ABRAÇÃO;
ATT-RODRIGO SOARES;
É isso mesmo! Pode utilizar a função sequencia() chamando só as que vc quer usar.
ExcluirAbraços!!!!!
FELLIPE; ESTOU BAIXANDO NO LING , MAS O CODIGO SESSA POSTAGEM NÃO SAI....
ResponderExcluirPQ;;ABRAÇÃO RODRIGO SOARES
Boa tarde, Rodrigo! Não entendi muito bem. O link é para download somente da biblioteca. O código desse post é esse que está postado aqui.
ExcluirAbraços!!!!
FELIPE ;;
ResponderExcluirOBRIGADO PELO SUPORTE É TANTA COISA DE FICAR LOUCO; JÁ ESTA FUMEGANDO;
ABRAÇÃO ;
RODRIGO SOARES
FELIPE BOM DIA ;; CARA D+++ MONTEI JÁ 3 PROJETOS TEUS;
ResponderExcluirAMIGO COMO DIMINUIR O TEMPO DOS EFEITOS ;;;
ABRAÇÃO;
ATT-RODRIGO SOARES.,;;
Obrigado por compartilhar, tenho uma pergunta... usando esse mesmo esquema posso acender qual quer led individualmente usando botoes?
ResponderExcluirBom dia, Manuela!
ExcluirUsando esse esquema é possível sim controlar cada led individualmente. Usa-se essa biblioteca para ampliar o número de portas [ http://www.efeitonerd.com.br/2012/09/ampliar-saidas-do-arduino-library.html ] em conjunto com os registradores 74HC595.
Este comentário foi removido pelo autor.
ResponderExcluirFelipe montei o sequencial com 72 canais no proteus tudo funciona perfeitamente mas estou tento um problema os LEDs ficam piscando intermitentes saberia me dizer o que pode estar acontecendo.
ResponderExcluiroiiii teria como colocar uns 100 a 200 leds ????
ResponderExcluirBoa tarde!
ExcluirPara essa quantidade, talvez seria indicado utilizar um driver de leds. Mas, funciona.
Abraços!
poderia me mandar mas detalhes do projeto por favor
ResponderExcluiremail : quezaia15@gmail.com
Qual seria o maior detalhamento que precisa?
ExcluirAbraços!
como estou começando agora a estudar arduino, gostaria muito de entender como foi utilizado aquele c.i ?
ExcluirAonde está o arduino que o senhor utilizou ???( porque na imagem da placa confeccionada não aparece o arduino junto) gostaria de entender melhor se possivel !!!!!!!!!!
Obrigado pela a atenção :) esta fazendo um otimo trabalho !!
Boa tarde!
ExcluirO Arduino está montado de forma stand-alone. Utilizando somente o CI micrcontrolador ATMega328.
Costumo utilizar o CI com o bootloader UNO.
https://www.google.com.br/?gws_rd=ssl#safe=off&q=arduino+stand+alone
Obrigado pelo elogio!
Abraços!
oi meu nome carlos queria saber si vc tem um proeto de sistema de giroflex para viaturas em led meu imail e joao1234007@gmail.com sou de fortaleza vc tem zap amigo
ResponderExcluir