Show Posts
|
|
Pages: 1 2 3 [4] 5 6
|
|
47
|
International / Español / Re: Proyecto de Atmósfera Controlada. Sensor DHT22 + Reles
|
on: January 03, 2012, 08:58:41 am
|
El While(true) va a hacer que nunca salga de ese bucle, yo quitaría el while, las instrucciones se encuentran dentro del loop, así que harás el if siempre. // Example testing sketch for various DHT humidity/temperature sensors // Written by ladyada, public domain
#include "DHT.h" #include <LiquidCrystal.h>
//// CODIGO SENSOR DE HUMEDAD Y TEMPERATURA DHT22
#define DHTPIN 7 // what pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302)
// Connect pin 1 (on the left) of the sensor to +5V // Connect pin 2 of the sensor to whatever your DHTPIN is // Connect pin 4 (on the right) of the sensor to GROUND
DHT dht(DHTPIN, DHTTYPE);
//// CODIGO LCD
// LCD RS pin to digital pin 12 // LCD Enable pin to digital pin 11 // LCD D4 pin to digital pin 5 // LCD D5 pin to digital pin 4 // LCD D6 pin to digital pin 3 // LCD D7 pin to digital pin 2 // LCD R/W pin to ground // 10K resistor: // ends to +5V and ground // wiper to LCD VO pin (pin 3)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// RELE int rele1 = 8; // PIN al que va conectado el relé
void setup() { Serial.begin(9600); Serial.println("DHT22 test!");
lcd.begin(16, 2); lcd.print("DHT22 test!");
dht.begin();
pinMode(rele1, OUTPUT);
}
void loop() { // Reading temperature or humidity takes about 250 milliseconds! // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) float h = dht.readHumidity(); float t = dht.readTemperature();
// check if returns are valid, if they are NaN (not a number) then something went wrong! if (isnan(t) || isnan(h)) { Serial.println("Fallo al leer el sensor"); lcd.print("Fallo al leer el sensor");
} else { Serial.print("Humedad: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperatura: "); Serial.print(t); Serial.println(" *C"); lcd.setCursor(0, 0); lcd.print("Humedad: "); lcd.print(h); lcd.print(" %\t"); lcd.setCursor(0,1); lcd.print("Temp: "); lcd.print(t); lcd.print(" *C");
}
if (t < 24.00) { digitalWrite(rele1, HIGH); } else digitalWrite(rele1, LOW);
}
|
|
|
|
|
52
|
International / Español / Re: ¿Ejecutar codigo una sola vez?
|
on: December 29, 2011, 05:22:36 pm
|
Lo que estás haciendo es asignar el valor 0 a "var" cada vez que repites el loop y, por tanto, repitiendo el blink siempre. Pon "int var = 0;" en setup o, como dice ionhs, ponlo todo en setup. Una forma para verlo claro es crearte el blink como una función void, por ejemplo; void setup() { // initialize the digital pin as an output. // Pin 13 has an LED connected on most Arduino boards: pinMode(13, OUTPUT); blink(); blink(); }
void loop() {} void blink(){ digitalWrite(13, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(13, LOW); // set the LED off delay(1000); // wait for a second digitalWrite(13, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(13, LOW); // set the LED off delay(1000); // wait for a second }
|
|
|
|
|
53
|
International / Español / Re: Duda rápida pulsador
|
on: December 23, 2011, 07:28:32 am
|
Cierto roca, pero tendrías que pulsar el botón millones de veces, no se yo si el botón lo resisitiría  Tu forma sería más correcta, sí señor. Edito; me he dejado un detalle que quizás es relevante, un delay, para que de tiempo a quitar el dedo del botón: const int buttonPin = 8; const int ledPin = 13; int estado = 0;
void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT); }
void loop(){ if (digitalRead(buttonPin) == HIGH) { delay(500); if(estado) digitalWrite(ledPin, HIGH); else digitalWrite(ledPin, LOW); estado = ~estado; } }
|
|
|
|
|
54
|
International / Español / Re: Duda rápida pulsador
|
on: December 23, 2011, 06:36:23 am
|
He probado lo de estado ~=estado y no me funciona, cámbialo por estado = !estado; Te explico el código; int estado =0 //comprobador de estado (para encendido/apagado) setup(){ ... } void loop(){ buttonState = digitalRead(buttonPin); //lectura del botón, si esta pulsado entrará if (buttonState == HIGH) { if(estado) //comprueba el valor de estado (1 o 0) encendido o apagado digitalWrite(ledPin, HIGH); else digitalWrite(ledPin, LOW); estado = !estado; //niega el valor de estado, si era 1, pasa a ser 0 y viceversa } } En la otra forma que te decía, en lugar de negar el valor de estado, le va sumando 1 y comprueba si el valor es par o impar, para decidir si encender o apagar el led int estado =0 setup(){ ... } void loop(){ buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { if(estado%2==0) //comprueba si estado es par o impar, si es par enciende el led digitalWrite(ledPin, HIGH); else //si es impar, apaga el led digitalWrite(ledPin, LOW); estado++; //estado va acumulando el valor de 1 en 1 (par e impar) para las siguientes comprobaciones } }
|
|
|
|
|
55
|
International / Español / Re: Duda rápida pulsador
|
on: December 22, 2011, 05:20:36 pm
|
la línea de estado ~= estado; no la he probado, no se si funcionaría, espero que sí. Si no funciona, puedes usar este otro método; ... if( estado%2 != 0) ... estado++; ...
|
|
|
|
|
56
|
International / Español / Re: Duda rápida pulsador
|
on: December 22, 2011, 03:15:48 pm
|
Tienes que crearte un registro para saber en qué estado está el led, y luego variar su estado en cada pulsación, algo así; int estado =0 setup(){ ... } void loop(){ buttonState = digitalRead(buttonPin); if (buttonState == HIGH) { if(estado) digitalWrite(ledPin, HIGH); else digitalWrite(ledPin, LOW); estado ~= estado; } }
|
|
|
|
|
57
|
International / Español / Re: Integrados L293NE y L293DNE
|
on: December 14, 2011, 06:46:45 am
|
Asegurate de que usas solo uno de los dos pines para la dirección del motor y el otro lo pones a GND, si no, se quedará bloqueado y/o puede que frías el integrado. Por ejemplo;  Tomando el lado de los pines 1 a 8, si pones A (pin2) en modo HIGH (6V), pon B(pin7) en modo LOW (GND). Esos pines son los que indican la dirección en que debe girar el motor (explicado a grosso modo). Si pones uno a '1', el otro debe tener '0'. Hay tablas que indican la dirección de los motores: A B descripción 0 0 motores parados 0 1 giro derecha 1 0 giro izquierda 1 1 motores parados (en algunos casos ponen que no llegues nunca ahí, porque puedes quemar el integrado)
|
|
|
|
|
59
|
International / Español / Re: Ayuda con Switch Contador Case
|
on: November 22, 2011, 08:56:36 am
|
O utilizando el módulo de 3 para que te de el valor del case deseado (0, 1 o 2) int i = 0; ... void pulsadorActivado(){ i = i %3; switch(i){ case 0: Configurar parámetros MIDI; i++; break; case 1: led parpadea y cambio los parametros midi; i++; break; case 2: led fijo y vuelvo a cambiar parametros midi; i++; break; } }
|
|
|
|
|