Señales digitales from Felipe Romano
Programas vistos durante la clase
Realizamos el Hola Mundo con el arduino pero utilizando un led y ya no el led integrado en nuestro arduino
El valor de la resistencia fue de 220ohms, recuerden que los diodos leds tienen polaridad, entonces deben ubicar el ánodo (+, polo positivo) y cátodo (-, polo negativo) de su led.
El led siempre debe tener una resistencia para controlar la corriente que pasa a través de ellos, ya que si ustedes buscan la hoja de especificaciones de su componente (Datasheet) le indicara cual es la corriente máxima y mínima que soporta su leds, para que no se queme, así como cual es la caída de tensión en el led, que normalmente es de 1.8v a 2.2v dependiendo del tipo de led que estén usando. Normalmente los led soportan una corriente máxima de 20mA y una mínima para que encienda de 10mA. Por lo tanto vamos a controlar que pasen 15mA. por ley de ohm calculamos esa resistencia, por ejemplo sabemos que cada señal de nuestro arduino nos entrega 5v y la caida de voltaje que tiene el led es de 2.2v. Despejando la resistencia de V=RI nos quedaría R=V/I, sustituyendo los valores seria R=(5v-2.2v)/15mA = 186.66ohms, pero la resistencia comercial mas cercana a ese valor seria 220ohms.
Por lo tanto vamos meter nuestro led a dos nodos distintos en nuestra protoboard como se muestra en la imagen, una vez identificado el ánodo conectaremos en serie la resistencia, de ahí pondremos un alambre de nuestra señal del arduino al otro extremo de la resistencia. Para cerrar el circuito y el led encienda correctamente el cátodo de nuestro led ira a la linea de tierra (GND).
---------------------------------------------------------------------------------------------------------------
El siguiente ejercicio que hicimos fue encender y apagar 3 leds de forma consecutiva.
La siguiente imagen muestra la forma en como se conectaran los leds, que es igual al ejemplo anterior solo que se hacen e veces y se alimentan con diferentes señales (pines) de nuestro arduino
Programas vistos durante la clase
Realizamos el Hola Mundo con el arduino pero utilizando un led y ya no el led integrado en nuestro arduino
El valor de la resistencia fue de 220ohms, recuerden que los diodos leds tienen polaridad, entonces deben ubicar el ánodo (+, polo positivo) y cátodo (-, polo negativo) de su led.
Por lo tanto vamos meter nuestro led a dos nodos distintos en nuestra protoboard como se muestra en la imagen, una vez identificado el ánodo conectaremos en serie la resistencia, de ahí pondremos un alambre de nuestra señal del arduino al otro extremo de la resistencia. Para cerrar el circuito y el led encienda correctamente el cátodo de nuestro led ira a la linea de tierra (GND).
void setup() {
// initialize digital pin 5 as an output.
pinMode(5, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(5, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(5, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
---------------------------------------------------------------------------------------------------------------
El siguiente ejercicio que hicimos fue encender y apagar 3 leds de forma consecutiva.
La siguiente imagen muestra la forma en como se conectaran los leds, que es igual al ejemplo anterior solo que se hacen e veces y se alimentan con diferentes señales (pines) de nuestro arduino
int led1=2; // varaible tipo entero con valor de 5
int led2=3; // varaible tipo entero
int led3=4; // varaible tipo entero
int led4=5; // varaible tipo entero
void setup() { // bloque normalmente para la configuracion de los pines y la comunicacion del arduino
/* La configuracion pinMode la podemos hacer de diferentes maneras por ejemplo al querer encender un led
es una señal que saldra del arduino por lo tanto lo que estara dentro de los parentesis
sera pinMode(El pin que se configurará, el modo del pin ya sea señal de entrada o salida)*/
pinMode(led1,OUTPUT); // pinMode declara el modo de configuracion del pin
pinMode(led2,1); // 5 es el numero de pin que se encuentra conectado
pinMode(led3,true); // OUTPUT es el modo que significa salida
pinMode(led4,OUTPUT);
}
void loop() { //comienza el bucle principal del programa
digitalWrite(led1,HIGH); //enciende led del pin 2
delay(200); // espera 200ms
digitalWrite(led1,LOW); // apaga led del pin 2
delay(200); // espera 200ms
digitalWrite(led2,1); //enciende led del pin 3
delay(200); // espera 200ms
digitalWrite(led2,0); // apaga led del pin 3
delay(200); // espera 200ms
digitalWrite(led3,true); //enciende led del pin 4
delay(200); // espera 200ms
digitalWrite(led3,false); // apaga led del pin 4
delay(200); // espera 200ms
digitalWrite(led4,HIGH); //enciende led del pin 5
delay(200); // espera 200ms
digitalWrite(led4,LOW); // apaga led del pin 5
delay(200); // espera 200ms
}
----------------------------------------------------------------------------------------------------------------------
Como pudieron observar el codigo anterior indicamos al arduino que hiciera una tarea muy repetitiva
en varias lineas de codigo, pero con las estructuras de programación que vimos durante la primera clase, podemos reducir esa cantidad de lineas en unas cuantas.
Haciendo el ejemplo anterior pero ahora con una estructura "for"
int tiempo=200;
int n;
void setup() { //comienza la configuracion
for (n=2;n<=5;n++) { // el bloque de for se repetira hasta que se cumpla la condicion (n<=5)
pinMode (n, OUTPUT); // la instruccion declara el modo del pin, comienza con "n=2" con una señal de salida
} // "n" se incrementara hasta que tenga el valor de 8
}
void loop() {
for (n=2 ;n<=5; n++) {
digitalWrite (n, HIGH); // enciende el led del pin que contenga el valor de "n"
delay (tiempo); // espera 200ms antes de pasar a la siguente instruccion
digitalWrite (n, LOW); // apaga el lud del pin que contenga el valor de "n"
delay (tiempo); // espera 200ms antes de pasar a la siguente instruccion
}
}
-----------------------------------------------------------------------------------------------------------------
Con estructura while
int n=2;
int tiempo=350;
void setup() {
for (n=5;n<9;n++) { // el bloque de for se repetira hasta que se cumpla la condicion (n<9)
pinMode (n, OUTPUT); // la instruccion declara el modo del pin, comienza con "n=5" con una señal de salida
} // "n" se incrementara hasta que tenga el valor de 8
}
void loop() {
n=2; // a n le asignamos el valor de 2
while(n<=5){ // el siguiente bloque se repetira hasta que n sea mayor a 5
digitalWrite (n, HIGH); // enciende el led del pin que contenga el valor de "n"
delay (tiempo); // espera 200ms antes de pasar a la siguente instruccion
digitalWrite (n, LOW); // apaga el lud del pin que contenga el valor de "n"
delay (tiempo); // espera 200ms antes de pasar a la siguente instruccion
n++; // n se incrementa en 1
}
}
------------------------------------------------------------------------------------------------------------
El siguiente ejemplo fue para mostrar como crear funciones. Estas se crean cuando tienes que hacer una tarea repetitiva en diferentes partes de tu código.
int n;
void encender(int tiempo){ // creamos la funcion encender
for (n=2;n<=5;n++) {
digitalWrite (n, HIGH); // enciende el led del pin que contenga el valor de "n"
delay (tiempo); // esperara el tiempo que recibira cuando sea llamado la funcion
digitalWrite (n, LOW); // apaga el lud del pin que contenga el valor de "n"
delay (tiempo);
}
}
void setup() {
for (n=2;n<=5;n++) {
pinMode (n, OUTPUT);
}
}
void loop() {
encender(100); // llamos a la funcion encender y le mandamos 100ms, que se le asignaran a tiempo
encender(200); // llamos a la funcion encender y le mandamos 200ms, que se le asignaran a tiempo
encender(300); // llamos a la funcion encender y le mandamos 300ms, que se le asignaran a tiempo
}
--------------------------------------------------------------------------------------------------------------------
otro ejemplo de funciones NO visto en clase
void setup() {
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
}
void loop() {
flash_led(2,500);
flash_led(5,1000);
flash_led(4,200);
flash_led(3,200);
}
void flash_led(byte led, int espera){ // funcion flash_led, la cual pide el led que se va a encender y el tiempo que va a permanecer encendido y apagado
digitalWrite(led,HIGH);
delay(espera);
digitalWrite(led,LOW);
delay(espera);
}
---------------------------------------------------------------------------------------------------------------------
Otro ejemplo con funciones, en este código desee llegar cuando les hable de llamar una función, dentro de otra función, es un ejemplo de un semáforo que dura 1s antes de cambiar de luz roja a verde
int semaforo[] = {2, 3, 4}; // una variable array que seran los pines a utilizar
void setup() {
for (int i = 0; i < 3; i++) { // se comienza desde 0 y termina en 2
pinMode(semaforo[i], OUTPUT); // la variable semaforo contiene 3 elementos adentro de el
// cuando i tenga el valor de 0, va configurar el pin 2
} // como una salida, cuando i sea 1, el pin 3 se configurara
}
void apagar() { // funcion que apaga los leds
for (int i = 0; i < 3; i++) {
digitalWrite(semaforo[i], false);
}
}
void rutinaSemaforo(int tiempo) { // funcion rutinaSemaforo que recive el valor de tiempo cuando es llamada
for (int i = 0; i < 3; i++) {
apagar(); // se llama la funcion apagar y apaga todos los leds
digitalWrite(semaforo[i], true); // enciende el led i
delay(tiempo); // hace una pausa
}
}
void loop() {
rutinaSemaforo(1000); // se llama la funcion y se le asigna 1000 al tiempo
}
------------------------------------------------------------------------------------------------------------------------
Se propuso durante la clase un ejercicio
Realizar programa que te envie un msj SOS en morse por medio de un LED
los tiempo de duracion de el LED en mantenerse encendido y apagado son
Realizarlo con una funcion(tiempo).
//s(...) primer punto
encendido (200);
apagado (200);
//segundo punto
encendido (200);
apagado (200);
// tercer punto
encendido (200);
apagado (200);
//O (---) primera raya
encendido (500);
apagado (500);
//sgunda raya
encendido (500);
apagado (500);
//tercera raya
encendido (500);
apagado (500);
//s(...) primer punto
encendido (200);
apagado (200);
//segundo punto
encendido (200);
apagado (200);
// tercer punto
encendido (200);
apagado (200);
--------------------------------------------------------------------------------------------------------------------
AHORA VEAMOS LAS SEÑALES DE ENTRADA (PUSHBUTTON)
Para el siguiente ejemplo necesitamos conectar un led y un pushbutton la resistencia sera de 10k ohms
-------------------------------------------------------------------------------------------------------------------
Juego, el siguiente circuito contara de 5 leds, estos leds se irán encendiendo y apagando de forma secuencial y cuando el led de en medio se encienda, el jugador apretar un botón, si acierta , un mensaje por el serial monitor , acertaste y la velocidad se incrementara.
int tiempo=1000;
int i=0;
void setup() {
for(i=2;i<=6;i++){ //LEDS
pinMode(i,OUTPUT);
}
pinMode(7, INPUT);//BOTON
Serial.begin(9600);
}
void loop() {
for(i=2;i<=6;i++){
digitalWrite(i,HIGH);
delay(tiempo);
comprobar();
digitalWrite(i,LOW);
delay(tiempo);
}
}
void comprobar(){
if (digitalRead(7)==1 && i==4){
Serial.println("Acertaste");
tiempo=tiempo-150;
}
}
--------------------------------------------------------------------------------------------------------------
Utilizar el led de 7 seg.
int ledA=0;
int ledB=1;
int ledC=2;
int ledD=3;
int ledE=4;
int ledF=5;
int ledG=6;
int ledH=7;
void cero(){
digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,HIGH);
digitalWrite(ledE,HIGH);
digitalWrite(ledF,HIGH);
digitalWrite(ledG,LOW);
}
void uno(){
digitalWrite(ledA,LOW);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,LOW);
digitalWrite(ledE,LOW);
digitalWrite(ledF,LOW);
digitalWrite(ledG,LOW);
}
void dos(){
digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,LOW);
digitalWrite(ledD,HIGH);
digitalWrite(ledE,HIGH);
digitalWrite(ledF,LOW);
digitalWrite(ledG,HIGH);
}
void tres(){
digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,HIGH);
digitalWrite(ledE,LOW);
digitalWrite(ledF,LOW);
digitalWrite(ledG,HIGH);
}
void cuatro(){
digitalWrite(ledA,LOW);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,LOW);
digitalWrite(ledE,LOW);
digitalWrite(ledF,HIGH);
digitalWrite(ledG,HIGH);
}
void cinco(){
digitalWrite(ledA,HIGH);
digitalWrite(ledB,LOW);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,HIGH);
digitalWrite(ledE,LOW);
digitalWrite(ledF,HIGH);
digitalWrite(ledG,HIGH);
}
void seis(){
digitalWrite(ledA,HIGH);
digitalWrite(ledB,LOW);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,HIGH);
digitalWrite(ledE,HIGH);
digitalWrite(ledF,HIGH);
digitalWrite(ledG,HIGH);
}
void siete(){
digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,LOW);
digitalWrite(ledE,LOW);
digitalWrite(ledF,LOW);
digitalWrite(ledG,LOW);
}
void ocho(){
digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,HIGH);
digitalWrite(ledE,HIGH);
digitalWrite(ledF,HIGH);
digitalWrite(ledG,HIGH);
}
void nueve(){
digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,HIGH);
digitalWrite(ledE,LOW);
digitalWrite(ledF,HIGH);
digitalWrite(ledG,HIGH);
}
void setup() {
int i;
for(i=0;i<8;i++)
pinMode(i,OUTPUT);
}
void loop() {
cero();
delay(500);
uno();
delay(500);
dos();
delay(500);
tres();
delay(500);
cuatro();
delay(500);
cinco();
delay(500);
seis();
delay(500);
siete();
delay(500);
ocho();
delay(500);
nueve();
delay(500);
}
-------------------------------------------------------------------------------------------------------------------------
El mismo código para usar el 7 segmentos pero con registros de puertos.
int arregloD[]={
// FEDCBA00
B11111100,//0
B00011000,//1
B01101100,//2
B00111100,//3
B10011000,//4
B10110100,//5
B11110100,//6
B00011100,//7
B11111100,//8
B10011100,//9
};
int arregloB[]={
B00000000,//0
B00000000,//1
B00000001,//2
B00000001,//3
B00000001,//4
B00000001,//5
B00000001,//6
B00000000,//7
B00000001,//8
B00000001,//9
};
int i;
void setup() {
DDRD=B11111100;
DDRB=B00000001;
}
void loop() {
for(i=0;i<10;i++){
PORTD=arregloD[i];
PORTB=arregloB[i];
delay (500);
}
}
__________________________________________________________________________
Hasta aqui termino la parte de señales digitales , ve a la parte de señales analogicas.
en varias lineas de codigo, pero con las estructuras de programación que vimos durante la primera clase, podemos reducir esa cantidad de lineas en unas cuantas.
Haciendo el ejemplo anterior pero ahora con una estructura "for"
int tiempo=200;
int n;
void setup() { //comienza la configuracion
for (n=2;n<=5;n++) { // el bloque de for se repetira hasta que se cumpla la condicion (n<=5)
pinMode (n, OUTPUT); // la instruccion declara el modo del pin, comienza con "n=2" con una señal de salida
} // "n" se incrementara hasta que tenga el valor de 8
}
void loop() {
for (n=2 ;n<=5; n++) {
digitalWrite (n, HIGH); // enciende el led del pin que contenga el valor de "n"
delay (tiempo); // espera 200ms antes de pasar a la siguente instruccion
digitalWrite (n, LOW); // apaga el lud del pin que contenga el valor de "n"
delay (tiempo); // espera 200ms antes de pasar a la siguente instruccion
}
}
-----------------------------------------------------------------------------------------------------------------
Con estructura while
int n=2;
int tiempo=350;
void setup() {
for (n=5;n<9;n++) { // el bloque de for se repetira hasta que se cumpla la condicion (n<9)
pinMode (n, OUTPUT); // la instruccion declara el modo del pin, comienza con "n=5" con una señal de salida
} // "n" se incrementara hasta que tenga el valor de 8
}
void loop() {
n=2; // a n le asignamos el valor de 2
while(n<=5){ // el siguiente bloque se repetira hasta que n sea mayor a 5
digitalWrite (n, HIGH); // enciende el led del pin que contenga el valor de "n"
delay (tiempo); // espera 200ms antes de pasar a la siguente instruccion
digitalWrite (n, LOW); // apaga el lud del pin que contenga el valor de "n"
delay (tiempo); // espera 200ms antes de pasar a la siguente instruccion
n++; // n se incrementa en 1
}
}
------------------------------------------------------------------------------------------------------------
El siguiente ejemplo fue para mostrar como crear funciones. Estas se crean cuando tienes que hacer una tarea repetitiva en diferentes partes de tu código.
int n;
void encender(int tiempo){ // creamos la funcion encender
for (n=2;n<=5;n++) {
digitalWrite (n, HIGH); // enciende el led del pin que contenga el valor de "n"
delay (tiempo); // esperara el tiempo que recibira cuando sea llamado la funcion
digitalWrite (n, LOW); // apaga el lud del pin que contenga el valor de "n"
delay (tiempo);
}
}
void setup() {
for (n=2;n<=5;n++) {
pinMode (n, OUTPUT);
}
}
void loop() {
encender(100); // llamos a la funcion encender y le mandamos 100ms, que se le asignaran a tiempo
encender(200); // llamos a la funcion encender y le mandamos 200ms, que se le asignaran a tiempo
encender(300); // llamos a la funcion encender y le mandamos 300ms, que se le asignaran a tiempo
}
--------------------------------------------------------------------------------------------------------------------
otro ejemplo de funciones NO visto en clase
void setup() {
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
}
void loop() {
flash_led(2,500);
flash_led(5,1000);
flash_led(4,200);
flash_led(3,200);
}
void flash_led(byte led, int espera){ // funcion flash_led, la cual pide el led que se va a encender y el tiempo que va a permanecer encendido y apagado
digitalWrite(led,HIGH);
delay(espera);
digitalWrite(led,LOW);
delay(espera);
}
---------------------------------------------------------------------------------------------------------------------
Otro ejemplo con funciones, en este código desee llegar cuando les hable de llamar una función, dentro de otra función, es un ejemplo de un semáforo que dura 1s antes de cambiar de luz roja a verde
int semaforo[] = {2, 3, 4}; // una variable array que seran los pines a utilizar
void setup() {
for (int i = 0; i < 3; i++) { // se comienza desde 0 y termina en 2
pinMode(semaforo[i], OUTPUT); // la variable semaforo contiene 3 elementos adentro de el
// cuando i tenga el valor de 0, va configurar el pin 2
} // como una salida, cuando i sea 1, el pin 3 se configurara
}
void apagar() { // funcion que apaga los leds
for (int i = 0; i < 3; i++) {
digitalWrite(semaforo[i], false);
}
}
void rutinaSemaforo(int tiempo) { // funcion rutinaSemaforo que recive el valor de tiempo cuando es llamada
for (int i = 0; i < 3; i++) {
apagar(); // se llama la funcion apagar y apaga todos los leds
digitalWrite(semaforo[i], true); // enciende el led i
delay(tiempo); // hace una pausa
}
}
void loop() {
rutinaSemaforo(1000); // se llama la funcion y se le asigna 1000 al tiempo
}
Se propuso durante la clase un ejercicio
Realizar programa que te envie un msj SOS en morse por medio de un LED
los tiempo de duracion de el LED en mantenerse encendido y apagado son
Realizarlo con una funcion(tiempo).
//s(...) primer punto
encendido (200);
apagado (200);
//segundo punto
encendido (200);
apagado (200);
// tercer punto
encendido (200);
apagado (200);
//O (---) primera raya
encendido (500);
apagado (500);
//sgunda raya
encendido (500);
apagado (500);
//tercera raya
encendido (500);
apagado (500);
//s(...) primer punto
encendido (200);
apagado (200);
//segundo punto
encendido (200);
apagado (200);
// tercer punto
encendido (200);
apagado (200);
AHORA VEAMOS LAS SEÑALES DE ENTRADA (PUSHBUTTON)
Para el siguiente ejemplo necesitamos conectar un led y un pushbutton la resistencia sera de 10k ohms
El led se va a encender cada vez que presionemos el botón
int estado=0;
void setup() {
pinMode(3,INPUT);
pinMode(4,OUTPUT);
}
void loop() {
estado=digitalRead(3);
if( estado==1) // si el boton esta precionado entonces...
digitalWrite(4,HIGH); // enciende el led, del pin 4
else // de lo contrario
digitalWrite(4,LOW); // apaga el led
}
-----------------------------------------------------------------------------------------------------------
TAREA 2
Usando un botón que NO se tenga que mantener pulsado para que un led permanezca encendido, Presionando nuevamente el mismo botón el led se apagara.
*** Como mandar mi tarea, revisa la pestaña de extra
-------------------------------------------------------------------------------------------------------------------
Juego, el siguiente circuito contara de 5 leds, estos leds se irán encendiendo y apagando de forma secuencial y cuando el led de en medio se encienda, el jugador apretar un botón, si acierta , un mensaje por el serial monitor , acertaste y la velocidad se incrementara.
int tiempo=1000;
int i=0;
void setup() {
for(i=2;i<=6;i++){ //LEDS
pinMode(i,OUTPUT);
}
pinMode(7, INPUT);//BOTON
Serial.begin(9600);
}
void loop() {
for(i=2;i<=6;i++){
digitalWrite(i,HIGH);
delay(tiempo);
comprobar();
digitalWrite(i,LOW);
delay(tiempo);
}
}
void comprobar(){
if (digitalRead(7)==1 && i==4){
Serial.println("Acertaste");
tiempo=tiempo-150;
}
}
--------------------------------------------------------------------------------------------------------------
Utilizar el led de 7 seg.
int ledA=0;
int ledB=1;
int ledC=2;
int ledD=3;
int ledE=4;
int ledF=5;
int ledG=6;
int ledH=7;
void cero(){
digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,HIGH);
digitalWrite(ledE,HIGH);
digitalWrite(ledF,HIGH);
digitalWrite(ledG,LOW);
}
void uno(){
digitalWrite(ledA,LOW);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,LOW);
digitalWrite(ledE,LOW);
digitalWrite(ledF,LOW);
digitalWrite(ledG,LOW);
}
void dos(){
digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,LOW);
digitalWrite(ledD,HIGH);
digitalWrite(ledE,HIGH);
digitalWrite(ledF,LOW);
digitalWrite(ledG,HIGH);
}
void tres(){
digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,HIGH);
digitalWrite(ledE,LOW);
digitalWrite(ledF,LOW);
digitalWrite(ledG,HIGH);
}
void cuatro(){
digitalWrite(ledA,LOW);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,LOW);
digitalWrite(ledE,LOW);
digitalWrite(ledF,HIGH);
digitalWrite(ledG,HIGH);
}
void cinco(){
digitalWrite(ledA,HIGH);
digitalWrite(ledB,LOW);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,HIGH);
digitalWrite(ledE,LOW);
digitalWrite(ledF,HIGH);
digitalWrite(ledG,HIGH);
}
void seis(){
digitalWrite(ledA,HIGH);
digitalWrite(ledB,LOW);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,HIGH);
digitalWrite(ledE,HIGH);
digitalWrite(ledF,HIGH);
digitalWrite(ledG,HIGH);
}
void siete(){
digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,LOW);
digitalWrite(ledE,LOW);
digitalWrite(ledF,LOW);
digitalWrite(ledG,LOW);
}
void ocho(){
digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,HIGH);
digitalWrite(ledE,HIGH);
digitalWrite(ledF,HIGH);
digitalWrite(ledG,HIGH);
}
void nueve(){
digitalWrite(ledA,HIGH);
digitalWrite(ledB,HIGH);
digitalWrite(ledC,HIGH);
digitalWrite(ledD,HIGH);
digitalWrite(ledE,LOW);
digitalWrite(ledF,HIGH);
digitalWrite(ledG,HIGH);
}
void setup() {
int i;
for(i=0;i<8;i++)
pinMode(i,OUTPUT);
}
void loop() {
cero();
delay(500);
uno();
delay(500);
dos();
delay(500);
tres();
delay(500);
cuatro();
delay(500);
cinco();
delay(500);
seis();
delay(500);
siete();
delay(500);
ocho();
delay(500);
nueve();
delay(500);
}
-------------------------------------------------------------------------------------------------
Tarea 3
Mediante 4 botones hacer las combinaciones necesarias para encender los números del 0 -9
en los casos de exclusión mostrar una X.
B3 | B2 | B1 | B0 | S | |
0 | 0 | 0 | 0 | 0 | |
0 | 0 | 0 | 1 | 1 | |
0 | 0 | 1 | 0 | 2 | |
0 | 0 | 1 | 1 | 3 | |
0 | 1 | 0 | 0 | 4 | |
0 | 1 | 0 | 1 | 5 | |
0 | 1 | 1 | 0 | 6 | |
0 | 1 | 1 | 1 | 7 | |
1 | 0 | 0 | 0 | 8 | |
1 | 0 | 0 | 1 | 9 | |
1 | 0 | 1 | 0 | X | |
1 | 0 | 1 | 1 | X | |
1 | 1 | 0 | 0 | X | |
1 | 1 | 0 | 1 | X | |
1 | 1 | 1 | 0 | X | |
1 | 1 | 1 | 1 | X |
-------------------------------------------------------------------------------------------------------------------------
El mismo código para usar el 7 segmentos pero con registros de puertos.
int arregloD[]={
// FEDCBA00
B11111100,//0
B00011000,//1
B01101100,//2
B00111100,//3
B10011000,//4
B10110100,//5
B11110100,//6
B00011100,//7
B11111100,//8
B10011100,//9
};
int arregloB[]={
B00000000,//0
B00000000,//1
B00000001,//2
B00000001,//3
B00000001,//4
B00000001,//5
B00000001,//6
B00000000,//7
B00000001,//8
B00000001,//9
};
int i;
void setup() {
DDRD=B11111100;
DDRB=B00000001;
}
void loop() {
for(i=0;i<10;i++){
PORTD=arregloD[i];
PORTB=arregloB[i];
delay (500);
}
}
__________________________________________________________________________
Hasta aqui termino la parte de señales digitales , ve a la parte de señales analogicas.
No hay comentarios:
Publicar un comentario