Electrónica y Programación en Personal
«Si no se soluciona con un script en Python entonces no es viable»

por Yeison Cardona el 13 de octubre del 2014 a las 2:43 am UTC

Lo que faltaba, como no puedo escribir nada original ahora me pongo a traducir entradas de otros blogs.

Esta es la traducción de un post que se publicó en el blog oficial de Pinguino, me pareció muy interesante y quise traerla al blog, aunque en realidad no hay mucho que traducir.

Se trata de 6 formas para hacer «BlinkLED» con Pinguino, como deben saber el «hola mundo» de los microcontroladores es ése, encender y apagar un LED, la gente de Pinguino ha recopilado algunos métodos diferentes, he de comentar que algunos yo no los conocía, empecemos:

Con los registros del PIC

Bastande fácil de entender, en caso contrario podemos entonces consultar el siempre útil Data Sheet.

void setup() {
    TRISAbits.TRISA4 = OUTPUT;
}

void loop() {
    LATAbits.LATA4 = LOW;
    delay(50);
    LATAbits.LATA4 = HIGH;
    delay(500);
}

La forma Arduino

Pinguino heredó un leguaje de programación similar a Arduino (por cuestiones de compatibilidad), es el que todos conocemos y usamos comunmente con nuestras tarjetas Pinguino.

void setup() {
    pinMode(USERLED, OUTPUT);
}

void loop() {
    digitalWrite(USERLED, LOW);
    delay(500);
    digitalWrite(USERLED, HIGH);
    delay(500);
}

...O mucho mas sencillo

void setup() {
    pinMode(USERLED, OUTPUT);
}

void loop() {
    toggle(USERLED);
    delay(500);
}

Implementando interrupciones

En este ejemplo se ha creado un función que se encarga de alternar el estado de LED, luego se crea una interrupción (OnTimer0) en la que se le «dice» que cada 500 milisegundos ejecute dicha función. Y eso es todo ahora podemos despreocuparnos por dicha parte y podemos agregar lo que queramos en la función «loop» con la seguridad de que cada cierto tiempo se ejecutará la interrupción.

void myBlink() {
    toggle(USERLED); 
}

void setup() {
    pinMode(USERLED, OUTPUT);
    // Use Timer0 to toggle the USERLED every 500 ms
    OnTimer0(myBlink, INT_MILLISEC, 500);
}

void loop() {
}

Usando Watchdog

Los watchdog es mecanismo de seguridad en caso de los un sistema microcontrolado falle intempestivamente, ¿la solución? resetaeando el microcontrolador, consiste en hacer que el microcontrolador se resetee cada cierto tiempo, de esta manera si el sistema se encontraba en un «cuelge» podrá continuar (iniciar) normalmente.
Hay que tener mucho cuidado si estamos interfazando porque esto implica reiniciar la conexión también, en muchos casos reasignar permisos, cambiar puertos, etc.

void setup() {
    pinMode(USERLED, OUTPUT);
    // Enable Watchdog Timer
    // Watchdog is driven by the Internal Oscillator (8MHz)
    // Nominal period of Watchdog is 4ms
    // Watchdog postscaler is set to 1:32768 by config. bits
    // Watchdog timer will overload after 32768*4ms = 135sec = 2.25min
    System.watchdog();
}

void loop() {
    System.clearWatchdog(); // clear watchdog timer
    // Enter Sleep Mode
    System.sleep(); // wait for watchdog timer overload
    // Back to Run Mode
    toggle(USERLED); // toggle the led
}

Con el entorno gráfico de Pinguino

Mi método favorito, desde la versión 11.0 podemos programar código de manera gráfica en Pinguino.


También podría interesarte:

Añadir un comentario:
Si desean una respuesta para su comentario sólo deben agregarme en G+ y hacer una mención a Yeison Cardona, así les podré responder lo antes posible.