Código Fuente
#define A 2
#define B 3
#define C 4
#define D 5
#define E 6
#define F1 7
#define G 8
#define BTN1 14
#define BTN2 15
#define BTN3 16
#define BTN4 17
#define led 13
// Pines comunes de cada display de anodo comun
#define CA1 9
#define CA2 10
int bandera=1;
int ban=0;
int banderab=1;
int banb=0;
void(* Resetea) (void) = 0;
// Pines para A B C D E F G, en secuencia
const int segs[7] = { 2, 3, 4, 5, 6, 7, 8 };
// Segmentos que componen cada número
// const byte numbers[10] = { 0b1000000, 0b1111001, 0b0100100, 0b0110000, 0b0011001, 0b0010010, 0b0000010, 0b1111000, 0b0000000, 0b0010000}; // ánodo común
const byte numbers[10] = { 0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, 0b1101101, 0b1111101, 0b0000111, 0b1111111, 0b1101111};//cátodo común
int digit1 = 0;
int digit2 = 0;
void setup()
{
Serial.begin(9600);
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F1, OUTPUT);
pinMode(G, OUTPUT);
pinMode(BTN1, INPUT);
pinMode(BTN2, INPUT);
pinMode(BTN3, INPUT);
digitalWrite(BTN1, HIGH); // activa RPA
digitalWrite(BTN2, HIGH); // activa RPA
digitalWrite(BTN3, HIGH); // activa RPA
pinMode(CA1, OUTPUT);
pinMode(CA2, OUTPUT);
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
// pinMode(led12, OUTPUT);
}
void loop()
{
//////////Boton2//////////////////////////////////
int val2 = digitalRead(BTN2);
if ((val2 == HIGH) )
{
reset24();
boton2();
reset24();
tiempo();
reset24();
}
////////////boton3//////////
int val3 = digitalRead(BTN3);
if ((val3 == HIGH) )
{
reset14();
boton3();
reset14();
tiempo();
tiempo();//duplicado
reset14();
}
////////////boton4//////////
int val4 = digitalRead(BTN4);
if ((val4 == HIGH))
{
boton4();
reset14();
reset24();
int val4 = digitalRead(BTN4);
if ((val4 == HIGH))
{
Resetea();
}
}
////////////////////////////
reset14();
tiempo2();
reset14();
//Serial.print(digit1);
}
///////////////////////////////////////
int tiempo(){
unsigned long startTime = millis();
for (unsigned long elapsed=0; elapsed < 250; elapsed = millis() – startTime)
{
lightDigit1(numbers[digit1]);
delay(5);
lightDigit2(numbers[digit2]);
delay(5);
////////////////////////
////////////////////////
}
}
/////////////////////////////////////
void lightDigit1(byte number)
{
//ánodo común
// digitalWrite(CA1, HIGH);
// digitalWrite(CA2, LOW);
//cátodo común
digitalWrite(CA1, LOW);
digitalWrite(CA2, HIGH);
lightSegments(number);
///////////////////////
}
//////////////////////////////////////
void lightDigit2(byte number)
{
//ánodo común
// digitalWrite(CA1, LOW);
// digitalWrite(CA2, HIGH);
//cátodo común
digitalWrite(CA1, HIGH);
digitalWrite(CA2, LOW);
lightSegments(number);
}
//////////////////////////////////////
void lightSegments(byte number)
{
for (int i = 0; i < 7; i++)
{
int bit = bitRead(number, i);
digitalWrite(segs[i], bit);
}
}
///////////Bocina//////////////////////////
int bocina(){
digitalWrite(led, HIGH);
reset14();
reset24();
reset60();
tiempo();
reset14();
reset24();
reset60();
tiempo();
reset14();
reset24();
reset60();
tiempo();
reset14();
reset24();
reset60();
tiempo();
reset14();
reset24();
reset60();
tiempo();
reset14();
reset24();
reset60();
tiempo();
reset14();
reset24();
reset60();
digitalWrite(led, LOW);
}
//tiempo2///////////////////////////
int tiempo2(){
unsigned long startTime = millis();
for (unsigned long elapsed=0; elapsed < 1; elapsed = millis() – startTime)
{
lightDigit1(numbers[digit1]);
delay(5);
lightDigit2(numbers[digit2]);
delay(5);
}
}
/////////////reset a 14////////////
int reset14(){
//********reseteo a 14***************
//digitalWrite(led, LOW);
int val2 = digitalRead(BTN2);
if (val2 == HIGH)
{
//digitalWrite(led, LOW);
Resetea();
}
//**************************************
}
/////////////reseteo a 24////////////
int reset24(){
//********reseteo a 14***************
//
int val3 = digitalRead(BTN3);
if (val3 == HIGH)
{
//digitalWrite(led, LOW);
Resetea();
}
}
//**************************************
/////////////reseteo a 60////////////
int reset60(){
//digitalWrite(led, LOW);
int val4 = digitalRead(BTN4);
if (val4 == HIGH)
{
//digitalWrite(led, LOW);
Resetea();
}
}
//////////////////////////////////////////
////////////boton4 60 segundos/////////////////////////////////////////////////////////////////////////////////////////////////////////////
int boton4(){
int valor=0;
digit1=0;
digit2=6;
reset14();
reset24();
tiempo();
reset14();
reset24();
tiempo();
reset14();
reset24();
tiempo();
reset14();
reset24();
tiempo();
reset14();
reset24();
///////////stop-start///////
int val1 = digitalRead(BTN1);
reset14();
while(val1 == HIGH)
{
reset14();
ban=1;
reset14();
val1 = digitalRead(BTN1);
reset14();
tiempo();
reset14();
tiempo();//duplicado
reset14();
int val4 = digitalRead(BTN4);
if (val4 == HIGH)
{
Resetea();
}
int val3 = digitalRead(BTN3);
if (val3 == HIGH)
{
Resetea();
}
int val2 = digitalRead(BTN2);
if (val2 == HIGH)
{
Resetea();
}
val4 = digitalRead(BTN4);
if (val4 == HIGH)
{
Resetea();
}
val3 = digitalRead(BTN3);
if (val3 == HIGH)
{
Resetea();
}
}
///////////////////////////
while(digit2!=0 || digit1!=0){
///////////stop-start///////
int val1 = digitalRead(BTN1);
reset14();
while(val1 == HIGH)
{
reset14();
ban=1;
reset14();
val1 = digitalRead(BTN1);
reset14();
tiempo();
reset14();
tiempo();//duplicado
reset14();
int val4 = digitalRead(BTN4);
if (val4 == HIGH)
{
Resetea();
}
int val2 = digitalRead(BTN2);
if (val2 == HIGH)
{
Resetea();
}
int val3 = digitalRead(BTN3);
if (val3 == HIGH)
{
Resetea();
}
}
///////////////////////////
while(digit1!=0){
int val4 = digitalRead(BTN4);
if (val4 == HIGH)
{
Resetea();
}
///////////stop-start///////
int val1 = digitalRead(BTN1);
reset14();
while(val1 == HIGH)
{
reset14();
ban=1;
reset14();
val1 = digitalRead(BTN1);
reset14();
tiempo();
reset14();
tiempo();//duplicado
reset14();
int val4 = digitalRead(BTN4);
if (val4 == HIGH)
{
Resetea();
}
int val2 = digitalRead(BTN2);
if (val2 == HIGH)
{
Resetea();
}
int val3 = digitalRead(BTN3);
if (val3 == HIGH)
{
Resetea();
}
}
///////////////////////////
–digit1;
if(digit2==0 && digit1==0){
bocina();
}
tiempo();
reset14();
reset24();
tiempo();
reset14();
reset24();
tiempo();
reset14();
reset24();
tiempo();
reset14();
reset24();
}
reset14();
reset24();
if(digit2==0){
digit1=0;
digit2=0;
valor=1;
}
reset14();
reset24();
if(digit1==0 && valor==0){
–digit2;
digit1=9;
reset14();
reset24();
tiempo();
reset14();
reset24();
tiempo();
reset14();
reset24();
tiempo();
reset14();
reset24();
tiempo();
reset14();
reset24();
}
reset14();
reset24();
}
reset14();
reset24();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////boton4 24 segundos///////////////////////////
int boton3(){
int valor=0;
digit1=4;
digit2=2;
reset14();
reset60();
tiempo();
reset14();
reset60();
tiempo();
reset14();
reset60();
tiempo();
reset14();
reset60();
tiempo();
reset14();
reset60();
///////////stop-start///////
int val1 = digitalRead(BTN1);
reset14();
while(val1 == HIGH)
{
reset14();
ban=1;
reset14();
val1 = digitalRead(BTN1);
reset14();
tiempo();
reset14();
tiempo();//duplicado
reset14();
int val3 = digitalRead(BTN3);
if (val3 == HIGH)
{
Resetea();
}
val3 = digitalRead(BTN3);
if (val3 == HIGH)
{
Resetea();
}
int val2 = digitalRead(BTN2);
if (val2 == HIGH)
{
Resetea();
}
int val4 = digitalRead(BTN4);
if (val4 == HIGH)
{
Resetea();
}
}
///////////////////////////
while(digit2!=0 || digit1!=0){
///////////stop-start///////
int val1 = digitalRead(BTN1);
reset14();
while(val1 == HIGH)
{
reset14();
ban=1;
reset14();
val1 = digitalRead(BTN1);
reset14();
tiempo();
reset14();
tiempo();//duplicado
reset14();
int val3 = digitalRead(BTN3);
if (val3 == HIGH)
{
Resetea();
}
int val4 = digitalRead(BTN4);
if (val4 == HIGH)
{
Resetea();
}
val3 = digitalRead(BTN3);
if (val3 == HIGH)
{
Resetea();
}
}
///////////////////////////
while(digit1!=0){
int val3 = digitalRead(BTN3);
if (val3 == HIGH)
{
Resetea();
}
///////////stop-start///////
int val1 = digitalRead(BTN1);
reset14();
while(val1 == HIGH)
{
reset14();
ban=1;
reset14();
val1 = digitalRead(BTN1);
reset14();
tiempo();
reset14();
tiempo();//duplicado
reset14();
int val3 = digitalRead(BTN3);
if (val3 == HIGH)
{
Resetea();
}
int val4 = digitalRead(BTN4);
if (val4 == HIGH)
{
Resetea();
}
val3 = digitalRead(BTN3);
if (val3 == HIGH)
{
Resetea();
}
}
///////////////////////////
–digit1;
if(digit2==0 && digit1==0){
bocina();
}
tiempo();
reset14();
reset60();
tiempo();
reset14();
reset60();
tiempo();
reset14();
reset60();
tiempo();
reset14();
reset60();
}
reset14();
reset60();
if(digit2==0){
digit1=0;
digit2=0;
valor=1;
}
reset14();
reset60();
if(digit1==0 && valor==0){
–digit2;
digit1=9;
reset14();
reset60();
tiempo();
reset14();
reset60();
tiempo();
reset14();
reset60();
tiempo();
reset14();
reset60();
tiempo();
reset14();
reset60();
}
reset14();
reset60();
}
reset14();
reset60();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////boton4 14 segundos///////////////////////////
int boton2(){
int valor=0;
digit1=4;
digit2=1;
reset24();
reset60();
tiempo();
reset24();
reset60();
tiempo();
reset24();
reset60();
tiempo();
reset24();
reset60();
tiempo();
reset24();
reset60();
///////////stop-start///////
int val1 = digitalRead(BTN1);
reset24();
while(val1 == HIGH)
{
reset24();
ban=1;
reset24();
val1 = digitalRead(BTN1);
reset24();
tiempo();
reset24();
tiempo();//duplicado
reset24();
int val2 = digitalRead(BTN2);
if (val2 == HIGH)
{
Resetea();
}
int val3 = digitalRead(BTN3);
if (val3 == HIGH)
{
Resetea();
}
val2 = digitalRead(BTN2);
if (val2 == HIGH)
{
Resetea();
}
int val4 = digitalRead(BTN4);
if (val4 == HIGH)
{
Resetea();
}
}
///////////////////////////
while(digit2!=0 || digit1!=0){
///////////stop-start///////
int val1 = digitalRead(BTN1);
reset24();
while(val1 == HIGH)
{
reset24();
ban=1;
reset24();
val1 = digitalRead(BTN1);
reset24();
tiempo();
reset24();
tiempo();//duplicado
reset24();
int val2 = digitalRead(BTN2);
if (val2 == HIGH)
{
Resetea();
}
}
///////////////////////////
while(digit1!=0){
int val2 = digitalRead(BTN2);
if (val2 == HIGH)
{
Resetea();
}
///////////stop-start///////
int val1 = digitalRead(BTN1);
reset24();
while(val1 == HIGH)
{
reset24();
ban=1;
reset24();
val1 = digitalRead(BTN1);
reset24();
tiempo();
reset24();
tiempo();//duplicado
reset24();
int val2 = digitalRead(BTN2);
if (val2 == HIGH)
{
Resetea();
}
int val4 = digitalRead(BTN4);
if (val4 == HIGH)
{
Resetea();
}
int val3 = digitalRead(BTN3);
if (val3 == HIGH)
{
Resetea();
}
}
///////////////////////////
–digit1;
if(digit2==0 && digit1==0){
bocina();
}
tiempo();
reset24();
reset60();
tiempo();
reset24();
reset60();
tiempo();
reset24();
reset60();
tiempo();
reset24();
reset60();
}
reset24();
reset60();
if(digit2==0){
digit1=0;
digit2=0;
valor=1;
}
reset24();
reset60();
if(digit1==0 && valor==0){
–digit2;
digit1=9;
reset24();
reset60();
tiempo();
reset24();
reset60();
tiempo();
reset24();
reset60();
tiempo();
reset24();
reset60();
tiempo();
reset24();
reset60();
}
reset24();
reset60();
}
reset24();
reset60();
}
por favor me podrías compartir el código del reloj de posesión estoy trabajando justo con eso pero no puedo hacer la pause te agradeceria me ayudaras con eso!!!
givingivin3@gmail.com
Listo amigo ya está actualizado se agradece si le pones me gusta a algunos de mis videos en mi canal https://www.youtube.com/c/Carlosvolt
Disculpe sera posible me pueda compartir el esquema de conexionado de este proyecto?
hola recien empiezo con arduino uno quise hacerlo arrancar pero me sale un error stray 342 si me pudiera orientar le quedaria muy agradecido
Funcionamiento de un contador de posesión real:
4 botones, stop, start, 14 y 24
start inicia o continúa la cuenta
stop para y mantiene la cuenta (si quedaban 15 segundos, al pulsar start de nuevo, seguirán quedando 15 segundos)
14 reinicia el tiempo a 14 segundos
24 reinicia el tiempo a 24 segundos
Ni 14 ni 24 paran el reloj, ejemplo: si queda 1 segundo y se pulsa 14, seguirá sin tener que pulsar start
Pueden actualizar el proyecto a esta configuración?
Hola buenas tardes estoy trabajando con un tablero me podrían pasar el conexionado por favor, muy buen proyeto Gracias
Saludos