Blink
Un puerto permite entrada de datos o salida
de datos. Para que no haya colisión de datos
o cuando no se ocupe el puerto se pone en
alta impedancia. En microprocesadores
sencillos hay un registro que controla estas
compuertas, en Arduino registro de dirección
de datos (DDR), en el PIC three state
(TRIS).
El 1er programación
estructurada, procedimental
Un puerto del micro que se llama
PTOLED se configura como
salida y pongo en alta
impedancia la compuerta de
tercer estado para evitar un
corto, entonces mando la salida
donde está el Led un nivel alto.
Después llamo a una función
dándole los argumentos luego un
retardo, posteriormente mando a
la salida un nivel bajo con su
respectivo retardo.
2º. Programación con objetos
Con la clase PINMODE creo una instancia llamada LED, con el constructor pongo las
condiciones iniciales que son: poner ese puerto donde esta LED como salida es decir el
constructor.
El método DigitalWrite escribe en el puerto en la instancia LED un nivel alto, en MBED
Digital OUT(). Después un método de Retardo Delay()- en MBED wait().
Depende del lenguaje hay programas que se compilar, otros se interpretar. El
compilador hace la traducción del código fuente a código objeto en una sola vez
completo listo para ejecutarse. El intérprete al momento que lee cada instrucción la
traduce línea por línea, lo cual tarda más que el compilador.
El lenguaje C se compila con gcc el -o (output) es para decirle al compilador que salida
es la que quiero, el ejecutable (blink) luego se le da el programa fuente (blink.c) y al
último recuerda que la opción –l le indica al compilador que hay que agregar, enlazar o
encadenar la biblioteca wiringpi. Si desea ejecutarlo hay que darle la ruta, ./blink, con
esta instrucción le dice, que en la carpeta actual, es donde se encuentra el programa.
,$ g++ -Wall –o blink blink.c –lwiringPi /*Para que no me ponga warnings Wall*/
La barra está conectada en el conector interno
Se sale presionando CTRL-C
GND
GND
ARDUINO
Condiciones iniciales no requiere parámetros, no entrega o retorna ni tiene argumentos las llaves
son las que delimitan este método.
Con la clase PINMODE creo una
instancia llamada LED_BUILTIN(led de la
tarjeta), con el constructor poner ese
puerto donde esta LED como salida.
En el laso (loop)
Un método de la clase digitalWrite
(LED_BUILTIN,HIGH) manda un nivel “1”
alto
Retardo de 1000mseg=1seg
Un método de la clase (digitalWrite con
argumentos led,LOW
Retardo de 1000mseg=1seg y con la }
regresa a repetir otra vez el cuerpo en loop.
La library o biblioteca así se incluyen todas las
bibliotecas
En una clase DigitalOut se crea la instancia
myled con el constructor y damos condiciones
iniciales de la terminal a configurar
Laso infinito con While (1)
La instancia myled asignando un 1 encendemos el
led
Retardo
La instancia myled asignando un 0 apagar el led
Retardo
#include "mbed.h"
#include "platform/mbed_thread.h"
#define BLINKING_RATE_MS Blinking rate in milliseconds
1000
int main()
{
DigitalOut led(LED1); Initialize the digital pin LED1 as an output
while (true) {
led = !led;
thread_sleep_for(BLINKING_RATE_MS);
}
}
Configura el puerto B como salida
Laso infinito
La propiedad LATB0 de la clase o del objeto LATBbits
la inicializo con 1
Retardo
La propiedad LATB0 de la clase o del objeto LATBbits
la inicializo con 0
Retardo
La terminal número 5. La variable OUTPUT con
nivel 1 para configurar como salida
La biblioteca wiringPiSetup salida
La biblioteca externa digitalWrite
La biblioteca externa pinMode
Dependiendo de la biblioteca es como vamos a
trabajar.
Llamamos a la biblioteca wiringPi, luego cargamos
la terminal cargamos lo que corresponde a la
terminal, cargamos en ro un 5 en r1 la salida,
llamamos a la biblioteca de modo y cargamos en ro
nuevamente la terminal la traemos porque está en
memoria la traemos a ro, movemos en r un 1 para
indicar el valor que queremos guardar en el puerto y escribimos al puerto. Nuevamente la
terminal a ro un 0 en r1 y
escribimos. Faltan retardos.
PYTHON.
La síntesis es muy sencilla, Se usa IA, reconocimiento de imágenes gracias a que tiene
muchas bibliotecas. La desventaja que es más lento que C porque es INTERPRETE.
import para incluir la biblioteca y puede ser una clase que tenga varias subclases o
métodos. La clase raspberryPi (RPi) y dentro
tenemos un método llamado GPIO. El operador
punto liga la clase u objeto con sus métodos o
propiedades. Y se aprovecha para renombrarla la
clase GPIO es una instancia de [Link].
Después tenemos la clase time para retardos.
Observar que no hay ningún terminador de línea.
La clase GPIO, el método setwarnings es para
que NO ponga advertencias a la hora de ejecutar.
El método setmode de la clase GPIO con el
argumento ([Link]) es la propiedad que
indica el modo salida de la terminal, es de tipo
físico, como están en la tarjeta
El método setup de la clase GPIO con la
propiedad (pin,[Link]) preparar la terminal 40 y configura como salida.
[Link](pin,[Link]) # inicializa en 0, apagado el led.
En Python los cuerpos de las estructuras o funciones se definen por medio de
tabuladores.
Declara una variable a de tipo entero observar que phython es ligeramente tipado: no
requiere declarar tipos.
While True: es un ciclo infinifo.
El método output con la propiedad (pin,[Link]) prepara la terminal 40 y envía un
nivel alto a la salida.
El print envía el mensaje de led encendido, time. Sleep(0.5) Retardo de 500milisegund
El método output con la propiedad (pin,[Link]) prepara la terminal 40 y envía un
nivel bajo a la salida.
El print envía el mensaje de led apagado.
Como generar el ejecutable. En la terminal de la Raspberry, como siempre entramos en
la carpeta donde tenemos nuestro programa. Tecleamos el siguiente comando:
$ python [Link] ó python3 [Link]
Se detiene o exit presionando CTRL-C
JAVA
Java es interprete y es obligado al inicio la declaración de clase con class que es igual
al nombre del programa, esta se declara como publica para que cualquiera la pueda
llamar, se delimita con llaves.
La clase principal es de tipo estático con void antes de la función indica que no regresa
nada. Ahora con String args[] cuando ejecutamos el programa se puede ingresar un
argumento adicional por teclado, código ASCII y queda en el arreglo de tipo cadena.
La clase out de la clase System tiene un método println para imprimir en pantalla un
mensaje y este debe estar entre comillas.
Cuando llega haber un error en el programa sino pongo el try entra a una interrupción y
el programa se pierde. Si se utiliza try se recupere el control con catch. En la variable e
recuperamos el error y se manda en pantalla, [Link](¨…¨)
Se crea una instancia runTime de la clase Runtime y a la derecha el constructor
[Link]() de tipo nulo.
, [Link](¨gpio mode 24 out¨): Configuramos el puerto 24 en modo de salida
While True: es un ciclo infinifo
El método exec de la clase runTime con el argumento (¨gpio write 24 1¨): En los
puertos escribe en el puerto 24 un 1
El método sleep(500) de la claseThread-hilo. Retardo de 500 milisegundos
El método exec con el argumento (¨gpio write 24 0¨): En los puertos escribe en el
puerto 24 un 0. Nuevamente llama el método sleep(500) para retardo de
500milisegundos.
En java observar que si requiere terminador (;)
Como generar el ejecutable. En la terminal de la Raspberry, como siempre entramos en
la carpeta donde tenemos nuestro programa. Tecleamos el siguiente comando:
$javac [Link]. Requiere de pre compilación para crear la clase.
$java blinkledjava. Ahora llamamos al
interprete de java y luego la clase sin
extensión.
Lenguaje C
COMPILADOR
#include <wiringPi.h> /*biblioteca*/
#include <stdio.h>
int main(void) { /*Inicio del programa*/
if(wiringPiSetup() == -1) /*función de preparación de wiringPi*/
{ /*Regresa un -1 si hay un error*/
printf("Hay un error \n");
return -1;
}
pinMode(21,OUTPUT); /*Selecciona el puerto 21 y lo configura como salida*/
while(1) /*ciclo infinito*/
{
digitalWrite(21,HIGH);/*Escribimos en el puerto 21 un nivel lógico alto "1"*/
printf("led encendido \n");
delay(500); /*Retardo de 500ms*/
digitalWrite(21,LOW);/*Escribimos en el puerto 21 un nivel lógico bajo "0"*/
printf("led apagado \n");
delay(500);
}
return 0;
}
$ gcc -o blink blink.c –l wiringpi /*Para C*/
,$ g++ -Wall –o blink blink.c –lwiringPi /*Para que no me ponga warnings Wall*/
$ ./blink
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
Libro de POO: página 83- 98..
[Link]
[Link]
Para que actualizar el wiringpi
Calcular la Resistencia
R = V/I =Vcc-Vled / Idiodo
Voltaje del led 2.2 aproximadamente
Corriente propuesta de 1 a 5 mA
R = (5-2.2)Volts/ 5mA =560 Ohms
R = (3.3-2.2)Volts/ 2mA =550Ω
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39
41. JAVA