Ir para conteúdo
  • Cadastre-se

Multiprocessamento/Multi tarefas no Arduino

Avalie este tópico:


Felipe129

Posts em destaque

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 ver 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

 

 

 

 

  • Joinha 1
Link para o comentário
Compartilhar em outros sites

  • 1 mês depois...

Você não tem permissão para ver 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.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Restaurar formatação

  Apenas 75 emoticons máximos são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir apenas como um link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Você não pode colar imagens diretamente. Envie ou insira imagens do URL.

SOBRE O ELETRÔNICABR

EletrônicaBR é o melhor fórum técnico online, temos o maior e mais atualizado acervo de Esquemas, Bios e Firmwares da internet. Através de nosso sistema de créditos, usuários participativos têm acesso totalmente gratuito. Os melhores técnicos do mundo estão aqui!
Técnico sem o EletrônicaBR não é um técnico completo! Leia Mais...
×
×
  • Criar Novo...