Los alumnos de FP Básica estamos fabricando en la asignatura Equipos Eléctricos y Electrónicos un cronómetro programable tipo MasterChef para nuestros compañeros y compañeras de hostelería.
Esperamos en la próxima entrada poder subir fotos de como ha quedado finalmente,su funcionamiento y su inauguración en las cocinas.
Materiales:
CÓDIGO ARDUINO DEL CRONOMETRO:
//RELOJ VERSION V_1
//binario D C B A, minutos o segundos, decenas o unidades
#define CminD 19
#define BminD 18
#define AminD 17
#define DminU 10
#define CminU 9
#define BminU 8
#define AminU 7
#define CsegD 6
#define BsegD 5
#define AsegD 4
#define DsegU 3
#define CsegU 2
#define BsegU 1
#define AsegU 0
//botones control
#define minup 11
#define mindown 12
#define start 13
//minutos, segundos y variables para leer botones
int minutos=0;
int segundos=0;
bool up=0;
bool down=0;
bool empieza=0;
int digitomindecenas=0;
int digitominunidades=0;
int digitosegdecenas=0;
int digitosegunidades=0;
void setup() {
// salidas a los decodificadores
pinMode(CminD, OUTPUT);
pinMode(BminD, OUTPUT);
pinMode(AminD, OUTPUT);
pinMode(DminU, OUTPUT);
pinMode(CminU, OUTPUT);
pinMode(BminU, OUTPUT);
pinMode(AminU, OUTPUT);
pinMode(CsegD, OUTPUT);
pinMode(BsegD, OUTPUT);
pinMode(AsegD, OUTPUT);
pinMode(DsegU, OUTPUT);
pinMode(CsegU, OUTPUT);
pinMode(BsegU, OUTPUT);
pinMode(AsegU, OUTPUT);
//entradas botonera
pinMode(minup, INPUT);
pinMode(mindown, INPUT);
pinMode(start, INPUT);
Serial.begin(9600);
}
void loop() {
digitosegdecenas = 0;
digitosegunidades = 0;
up = digitalRead(minup);
down = digitalRead(mindown);
empieza = digitalRead(start);
if ((up == HIGH) && (minutos < 60) && (empieza == LOW)) {
minutos++;
delay(1200);
digitomindecenas = (minutos/10);
digitominunidades = (minutos-(digitomindecenas*10));
dibujardecenas (digitomindecenas, AminD, BminD, CminD);
dibujarunidades (digitominunidades, AminU, BminU, CminU, DminU);
dibujardecenas (digitosegdecenas, AsegD, BsegD, CsegD);
dibujarunidades (digitosegunidades, AsegU, BsegU, CsegU, DsegU);
Serial.print(digitomindecenas);
Serial.print(digitominunidades);
Serial.print(digitosegdecenas);
Serial.println(digitosegunidades);
}
if ((down == HIGH) && (minutos > 0) && (empieza == LOW)) {
minutos--;
delay(1200);
digitomindecenas = (minutos/10);
digitominunidades = (minutos-(digitomindecenas*10));
dibujardecenas (digitomindecenas, AminD, BminD, CminD);
dibujarunidades (digitominunidades, AminU, BminU, CminU, DminU);
dibujardecenas (digitosegdecenas, AsegD, BsegD, CsegD);
dibujarunidades (digitosegunidades, AsegU, BsegU, CsegU, DsegU);
Serial.print(digitomindecenas);
Serial.print(digitominunidades);
Serial.print(digitosegdecenas);
Serial.println(digitosegunidades);
}
if (empieza == HIGH) {
segundos = minutos*60;
while (segundos > 0) {
segundos--;
minutos = segundos/60;
digitomindecenas = minutos/10;
digitominunidades = minutos-(digitomindecenas*10);
digitosegdecenas = (segundos-(digitominunidades*60)-(digitomindecenas*600))/10;
digitosegunidades = segundos-(digitominunidades*60)-(digitomindecenas*600)-(digitosegdecenas*10) ;
dibujardecenas (digitomindecenas, AminD, BminD, CminD);
dibujarunidades (digitominunidades, AminU, BminU, CminU, DminU);
dibujardecenas (digitosegdecenas, AsegD, BsegD, CsegD);
dibujarunidades (digitosegunidades, AsegU, BsegU, CsegU, DsegU);
Serial.print(digitomindecenas);
Serial.print(digitominunidades);
Serial.print(digitosegdecenas);
Serial.println(digitosegunidades);
delay(1000);
}
}
}
//Funcion decodificador 7448 unidades:
void dibujarunidades (int num, int A, int B, int C, int D){
switch (num) {
case 0: {
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
break;
}
case 1: {
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
break;
}
case 2: {
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
break;
}
case 3: {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
break;
}
case 4:{
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
break;
}
case 5:{
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
break;
}
case 6: {
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
break;
}
case 7:{
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
break;
}
case 8:{
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
break;
}
case 9: {
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
break;
}
}
}
//Funcion decodificador 7448 decenas, poner D siempre en bajo:
int dibujardecenas (int num, int A, int B, int C){
switch (num) {
case 0: {
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
break;
}
case 1: {
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
break;
}
case 2: {
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
break;
}
case 3: {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
break;
}
case 4:{
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
break;
}
case 5:{
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
break;
}
}
}
Esperamos en la próxima entrada poder subir fotos de como ha quedado finalmente,su funcionamiento y su inauguración en las cocinas.
Materiales:
- Tablero contrachapado,
- 1 Arduino,
- 140 Leds,
- Cinta aislante
- Estaño
- 3 Pulsadores normalmente abiertos (botonera)
- 1 Interruptor,
- 1 Porta-pilas,
- 4 Pilas de 1,5 V
- 1 Pila de 9 V
- 2 Placas de circuito impreso
Herramientas:
- Sierra de calar
- Taladro
- Barrena
- Soldador
- Multímetro
- Fuente de alimentación
CÓDIGO ARDUINO DEL CRONOMETRO:
//RELOJ VERSION V_1
//binario D C B A, minutos o segundos, decenas o unidades
#define CminD 19
#define BminD 18
#define AminD 17
#define DminU 10
#define CminU 9
#define BminU 8
#define AminU 7
#define CsegD 6
#define BsegD 5
#define AsegD 4
#define DsegU 3
#define CsegU 2
#define BsegU 1
#define AsegU 0
//botones control
#define minup 11
#define mindown 12
#define start 13
//minutos, segundos y variables para leer botones
int minutos=0;
int segundos=0;
bool up=0;
bool down=0;
bool empieza=0;
int digitomindecenas=0;
int digitominunidades=0;
int digitosegdecenas=0;
int digitosegunidades=0;
void setup() {
// salidas a los decodificadores
pinMode(CminD, OUTPUT);
pinMode(BminD, OUTPUT);
pinMode(AminD, OUTPUT);
pinMode(DminU, OUTPUT);
pinMode(CminU, OUTPUT);
pinMode(BminU, OUTPUT);
pinMode(AminU, OUTPUT);
pinMode(CsegD, OUTPUT);
pinMode(BsegD, OUTPUT);
pinMode(AsegD, OUTPUT);
pinMode(DsegU, OUTPUT);
pinMode(CsegU, OUTPUT);
pinMode(BsegU, OUTPUT);
pinMode(AsegU, OUTPUT);
//entradas botonera
pinMode(minup, INPUT);
pinMode(mindown, INPUT);
pinMode(start, INPUT);
Serial.begin(9600);
}
void loop() {
digitosegdecenas = 0;
digitosegunidades = 0;
up = digitalRead(minup);
down = digitalRead(mindown);
empieza = digitalRead(start);
if ((up == HIGH) && (minutos < 60) && (empieza == LOW)) {
minutos++;
delay(1200);
digitomindecenas = (minutos/10);
digitominunidades = (minutos-(digitomindecenas*10));
dibujardecenas (digitomindecenas, AminD, BminD, CminD);
dibujarunidades (digitominunidades, AminU, BminU, CminU, DminU);
dibujardecenas (digitosegdecenas, AsegD, BsegD, CsegD);
dibujarunidades (digitosegunidades, AsegU, BsegU, CsegU, DsegU);
Serial.print(digitomindecenas);
Serial.print(digitominunidades);
Serial.print(digitosegdecenas);
Serial.println(digitosegunidades);
}
if ((down == HIGH) && (minutos > 0) && (empieza == LOW)) {
minutos--;
delay(1200);
digitomindecenas = (minutos/10);
digitominunidades = (minutos-(digitomindecenas*10));
dibujardecenas (digitomindecenas, AminD, BminD, CminD);
dibujarunidades (digitominunidades, AminU, BminU, CminU, DminU);
dibujardecenas (digitosegdecenas, AsegD, BsegD, CsegD);
dibujarunidades (digitosegunidades, AsegU, BsegU, CsegU, DsegU);
Serial.print(digitomindecenas);
Serial.print(digitominunidades);
Serial.print(digitosegdecenas);
Serial.println(digitosegunidades);
}
if (empieza == HIGH) {
segundos = minutos*60;
while (segundos > 0) {
segundos--;
minutos = segundos/60;
digitomindecenas = minutos/10;
digitominunidades = minutos-(digitomindecenas*10);
digitosegdecenas = (segundos-(digitominunidades*60)-(digitomindecenas*600))/10;
digitosegunidades = segundos-(digitominunidades*60)-(digitomindecenas*600)-(digitosegdecenas*10) ;
dibujardecenas (digitomindecenas, AminD, BminD, CminD);
dibujarunidades (digitominunidades, AminU, BminU, CminU, DminU);
dibujardecenas (digitosegdecenas, AsegD, BsegD, CsegD);
dibujarunidades (digitosegunidades, AsegU, BsegU, CsegU, DsegU);
Serial.print(digitomindecenas);
Serial.print(digitominunidades);
Serial.print(digitosegdecenas);
Serial.println(digitosegunidades);
delay(1000);
}
}
}
//Funcion decodificador 7448 unidades:
void dibujarunidades (int num, int A, int B, int C, int D){
switch (num) {
case 0: {
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
break;
}
case 1: {
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
break;
}
case 2: {
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
break;
}
case 3: {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
break;
}
case 4:{
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
break;
}
case 5:{
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
break;
}
case 6: {
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
break;
}
case 7:{
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
break;
}
case 8:{
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
break;
}
case 9: {
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
break;
}
}
}
//Funcion decodificador 7448 decenas, poner D siempre en bajo:
int dibujardecenas (int num, int A, int B, int C){
switch (num) {
case 0: {
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
break;
}
case 1: {
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
break;
}
case 2: {
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
break;
}
case 3: {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
break;
}
case 4:{
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
break;
}
case 5:{
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
break;
}
}
}
Comentarios
Publicar un comentario