Postado 4 de Dezembro de 2016 9 anos Fala galera queria mostrar para vocês o programa de multithread/processamento paralelo que adaptei para arduino. Pode ser usado para outros projetos que necessitam de um processamento paralelo com dois ou mais delays diferentes. São 4 Leds um pisca a cada 100ms, outro a 500ms, outro a 1000ms e outro a 2000ms. O projeto usa: -Arduino UNO -4 resistores limitadores de corrente para os LEDs -4 Leds usei um verde, azul, vermelho, amarelo -e jumpers Montagem: -Ligue os Leds usando os resistores limitadores de corrente: -Verde na digital 7 -Azul na digital 8 -Vermelho na digital 9 -Amarelo na digital 10 Código utilizado e as bibliotecas para download: Você não tem permissão para visualizar links. Faça login ou cadastre-se. São duas bibliotecas a Utility e a TimedAction que devem ser extraídas para a pasta libraries do arduino, em seguida reinicie a ide e carregue o código para o seu arduino. Codigo: --------------------------------------------------------------------------------------------------------- //Titulo: Multiprocessamento para 4 LEDs piscando com tempos diferentes //Autor: Felipe R. -- Felipe129 //Versão: 1.24.0 //Adaptado de: //Pode ser adaptado para uso com outros sistemas duvidas [EDITADO] /* * Resumo: * Led Amarelo pisca a cada 100ms * Led Vermelho pisca a cada 500ms * Led Azul pisca a cada 1000ms * Led Verde pisca a cada 3000ms */ /*Ligação esquematica: *Arduino UNO *4 LEDs ligados *Verde na digital 7 *Azul na digital 8 *Vermelho na digital 9 *Amarelo na digital 10 */ //Bibliotecas já atualizadas #include <Utility.h> #include <TimedAction.h> //Funções para cada ação void GreenLedON(){ //LED Verde liga digitalWrite (7, HIGH); } void BlueLedON(){ //LED Azul liga digitalWrite (8, HIGH); } void RedLedON(){ //LED Vermelho liga digitalWrite (9, HIGH); } void YellowLedON(){ //LED Amarelo liga digitalWrite (10, HIGH); } void GreenLedOFF(){ //LED Verde desliga digitalWrite (7, LOW); } void BlueLedOFF(){ //LED Azul desliga digitalWrite (8, LOW); } void RedLedOFF(){ //LED Vermelho desliga digitalWrite (9, LOW); } void YellowLedOFF(){ //LED Amarelo desliga digitalWrite (10, LOW); } //Crio as ações para o multiprocessamento de cada LED on/off TimedAction GreenLedThreadON = TimedAction(2000,GreenLedON); TimedAction BlueLedThreadON = TimedAction(1000,BlueLedON); TimedAction RedLedThreadON = TimedAction(500,RedLedON); TimedAction YellowLedThreadON = TimedAction(100,YellowLedON); TimedAction GreenLedThreadOFF = TimedAction(2000,GreenLedOFF); TimedAction BlueLedThreadOFF = TimedAction(1000,BlueLedOFF); TimedAction RedLedThreadOFF = TimedAction(500,RedLedOFF); TimedAction YellowLedThreadOFF = TimedAction(100,YellowLedOFF); void setup() { pinMode(7, OUTPUT); //LED Verde pinMode(8, OUTPUT); //LED Azul pinMode(9, OUTPUT); //LED Vermelho pinMode(10, OUTPUT); //LED Amarelo } void loop() { //Chamo os multithreads para ligar e desligar cada um GreenLedThreadON.check(); BlueLedThreadON.check(); RedLedThreadON.check(); YellowLedThreadON.check(); delay(20); //tempo que o led ficara ligado //tempo de delay apos executar as funçoes de ligar para desligar o LED GreenLedThreadOFF.check(); BlueLedThreadOFF.check(); RedLedThreadOFF.check(); YellowLedThreadOFF.check(); delay(20);//tempo que o led ficara ligado //tempo de delay apos executar as funçoes de ligar para desligar o LED } ---------------------------------------------------------------------------------------------------------- Referencias a: Qualquer duvida manda um SOS
Postado 3 de Fevereiro de 2017 9 anos Você não tem permissão para visualizar links. Faça login ou cadastre-se., Bacana, vi em suas postagens que está estudando microcontroladores, o que puder acrescentar para o fórum e de grande valia, obrigado.
Participe agora da conversa!
Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, faça login para postar com sua conta.