Pages: [1]   Go Down
Author Topic: por favor suplico su ayuda con mi trabajo  (Read 885 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

porfavor ayúdenme con mi trabajo  smiley-cry smiley-cry smiley-cry no logro poder hacerlo porfavor ayúdenme esto es lo que tengo que hacer
 
El proyecto consiste en controlar las luces de una casa como se describe a
continuación:
1. El primer led se controlará mediante un pushButton así:
1. Al presionar una vez, el led se encenderá mediante 30 segundos.
2. Si el botón se presiona una segunda vez en un periodo de 50
milisegundos, el led permanecerá encendido 90 segundos.
3. Si el botón se presiona una segunda vez después de 50 milisegundos,
el led se apagará.
4. Si se recibe una 'A' por el puerto serial, el led se encenderá por 30
segundos.
5. Si se recibe una 'B' por el puerto serial, el led se encenderá por 90
segundos.
6. Si se recibe una 'C' por el puerto serial, el led se apagará.
2. El segundo y el tercer led se controlan así:
1. Mediante dos botones, donde al presionar cualquiera de los dos
botones, se encenderán los dos leds y permanecerán encendidos 30
segundos.
2. Si el mismo botón que se presiono para encender los leds, se presiona
una segunda vez en un periodo de 50 milisegundos, los leds
permanecerán encendidos por 90 segundos.
3. Si el mismo botón se presiona una tercera vez en el mismo periodo de
50 milisegundos, los dos led encenderán de manera intermitente, uno a
la vez por 250 milisegundos y por un periodo de 15 segundos.
4. Si por el puerto serie se recibe una 'D' se realiza la actividad 1 de este
inciso.
5. Si se recibe una 'E' por el puerto serie, se realiza la segunda actividad
descrita en este inciso.
6. Si se recibe por el puerto serie una 'F' , se realiza la actividad 3 de este
inciso
7. Si se recibe una 'G', se apagan los dos leds.
3. Si cualquier botón permanece apretado por 100 milisegundos, todos los
leds encenderán al mismo tiempo de manera intermitente, con una
duración de 75 milisegundos encendidos y 650 milisegundos apagados,
esta acción permanecerá así por un minuto o hasta que se presione
cualquier botón por un periodo de 100 milisegundos.
4. El punto 3 se realizara también si se recibe por el puerto seria la letra 'T',
con lo cual los leds parpadearan como se describió y si se recibe otra 'T',
la actividad terminará.

esto es lo que llevo lo que me causa problemas son los tiempos los cuales no se como hacerlos  porfavor ayudenme
Code:
int led = 9;
int led1 = 10;
int led2 = 11;
int boton = 12;
int boton1 = 13;
int boton2 = 8;
int x = 0;
int y = 0;
int z = 0;
int estado = 0;
int estado1 = 0;
int estado2 = 0;
char val;

long actual;
long tinicio =0;


int ledStatus = false;
int buttonState = 0;
int lastButtonState = 0;
int lastButtonState2 = LOW;
int reading;
long lastDebounceTime = 0;
long debounceDelay = 200;


int input;




void parpa(){
 for(int i =0; i<5; i++);{
  digitalWrite(led2, LOW);
  digitalWrite(led1, HIGH);
  delay(50);
  digitalWrite(led1, LOW);
  digitalWrite(led2, HIGH);
  delay(50);
 
   }
}


void setup() {
  pinMode(boton, INPUT);
  pinMode(boton1, INPUT);
  pinMode(boton2, INPUT);
  pinMode(led, OUTPUT);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  Serial.begin(9600);
}

void loop(){
 
 estado = digitalRead(boton2);
  if(estado == HIGH){
    delay(90);                         
     x++;
    if(x > 4){
      x = 1;
    }
  }
  if (x == 1 ){
  actual=millis();
  if((actual -tinicio)/100>5){
     digitalWrite(led, HIGH);
   }
  }
  if (x == 2 ){
   digitalWrite(led, HIGH);
   delay(500);
   digitalWrite(led, LOW);
  }
  if ( x == 3){
  digitalWrite(led, LOW);
  }
 
 
 
 
  if(Serial.available()){
   val = Serial.read();
   Serial.print(val);
  }
   
    if( val == 'a' ){
    digitalWrite(led, HIGH);//activa el LED
    delay(300);

      }
   
    if( val == 'b' ){
    digitalWrite(led, HIGH);
    delay(100);
 
    }

    if( val == 'c' ){
    digitalWrite(led, LOW);
   
    }
   
   
   
   
   
 
   
  if (Serial.available()>0){
  input=Serial.read();
  if (input=='1'){
  digitalWrite(led, HIGH);
  delay(30000);
  }
 
  else{
  digitalWrite(led, LOW); }
  }

   
  estado1 = digitalRead(boton1);
  if(estado1 == HIGH){
    delay(90);                         
     y++;
    if(y > 3){
      y = 1;
    }
  }
  if (y == 1 ){
   digitalWrite(led1, HIGH);
   digitalWrite(led2, HIGH);
   delay(2);
   digitalWrite(led1, LOW);
   digitalWrite(led2, LOW);
  }

  if (y == 2 ){
   digitalWrite(led1, HIGH);
   digitalWrite(led2, HIGH);
   delay(30);
   digitalWrite(led1, LOW);
   digitalWrite(led2, LOW);
  }
  if ( y == 3){
  void parpa();
  }
 
 
  estado2 = digitalRead(boton);
  if(estado2 == HIGH){
    delay(90);                         
     y++;
    if(y > 3){
      y = 1;
    }
  }
  if (y == 1 ){
   digitalWrite(led1, HIGH);
   digitalWrite(led2, HIGH);
   delay(2);
   digitalWrite(led1, LOW);
   digitalWrite(led2, LOW);
  }
  if (y == 2 ){
   digitalWrite(led1, HIGH);
   digitalWrite(led2, HIGH);
   delay(30);
  }
  if ( y == 3){
  void parpa();
  }
 
   
   
   if( val == 'g' ){
   digitalWrite(led1, LOW);
   digitalWrite(led2, LOW);
   }
   
    if( val == 'b' ){
    digitalWrite(led, HIGH);
    delay(100);
 
    }

    if( val == 'c' ){
    digitalWrite(led, LOW);
   
    } 
   
}

Logged

Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 958
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buf... ese codigo no tiene ni pies ni cabeza...

me extraña que funcione siquiera.

Te aconsejo empieces a leerte lo basico de arduino, las funciones case, los bucles y la definicion de funciones.

Luego puedes mirar las librerias de tiempo para no emplear delays muy largos.

Hasta que no sepas lo basico de arduino poco vas a poder adelantar...

Un saludo.

Logged

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

Chile
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
  while (millis() - start < 2000)
  {
    if (feedgps())
      newdata = true;
  }

El bucle se repite cada 2 seg (2000) mientras la condición se cumpla.

Pero como dice el amigo Heke... hay que leer un poquito  smiley

Te sugiero que vayas por parte y generar metas a corto plazo... por ejemplo "quiero que un led se prenda por 3 segundo si apreto un boton". Eso es mas facil para ti y para los que te quieran ayudar, y además con cosas pequeñas aprenderas las funcionalidades para realizar grandes proyectos.

Saludos
 smiley-cool
Logged

Spain
Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola verlassen.
Lo que impide que funcione correctamente son las instrucciones delay.
Leete el sketck de ejemplo blink.
Cuando lo entiendas, lee blinkwithoutdelay.
Y cuando lo entiendas verás porque no funciona(... como quieres que funcione)

Revisa el código que has hecho y ya me dirás smiley
Logged

Miami/Florida
Offline Offline
Sr. Member
****
Karma: 14
Posts: 342
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
2. Si el botón se presiona una segunda vez en un periodo de 50
milisegundos, el led permanecerá encendido 90 segundos.
Logged

Perseverance is 90% of the solution. The remaining 10% is more perseverance.

Miami/Florida
Offline Offline
Sr. Member
****
Karma: 14
Posts: 342
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oprimi el boton equivovado yo aqui y no pude escribir la respuesta.

te iba a decir que no hay forma humana de apretar el boton dos veces en un intervalo de 50 milisegundos de manera controlada. Si eso sucede es que no estas evitando el rebote de los contactos del boton. Recuerdo que en la escuela competiamos a ver quien podia parar un timer digital mas rapido, apretando el boton dos veces. Nadie pudo hacerlo en menos de 19 centecimas de segundo (190 ms) asi es que 50 milisegundos es inalcanzable...
Logged

Perseverance is 90% of the solution. The remaining 10% is more perseverance.

0
Offline Offline
God Member
*****
Karma: 1
Posts: 524
Arduino inside
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

cambia el título del post por favor
Logged

Pages: [1]   Go Up
Jump to: