Semáforo con EchidnaShield y eBlock

Ejemplo de programación de un semáforo con Echidna Shield y eBlock tanto en modo online como en modo compilado

Modo Online

Instalar el firmware

Antes nos aseguramos de haber instalado el firmware que permite usar la placa en modo online

Código

Modo Offline

Código de bloques

Sólo hay que cambiar el bloque inicial y subirlo a la placa

Código C++ generado

#include "eblock.h"

void setup(){
    Serial.begin(9600);
    echidna_led(13, 0);
    echidna_led(12, 0);
    echidna_led(11, 1);
    _delay(1);
    echidna_led(11, 0);
    for(int __i__=0;__i__<6;++__i__)
    {
        echidna_led(12, 2);
        _delay(0.5);
    }
    echidna_led(13, 1);
}

void loop(){
    _loop();
}

void _loop(){
    	echidna_buttons_events();
}

void echidna_led(uint8_t pin, uint8_t state ){
    	if(pin==0){ //ALL pins
                e_pin_set(11,state);
                e_pin_set(12,state);
                e_pin_set(13,state);
         }else{
                e_pin_set(pin,state);
        };
}

void echidna_buttons_events(){
       if( e_is_button_down(2) ) e_event_call(1);
       if( e_is_button_up(2) )   e_event_call(2);
       if( e_is_button_down(3) ) e_event_call(3);
       if( e_is_button_up(3) )   e_event_call(4);
}

void register_callback( uint8_t event,   void (*in_main_func)()  ){
    	e_event( event, in_main_func);
}

void _delay(float seconds){
    long endTime = millis() + seconds * 1000;
    while(millis() < endTime)_loop();
}