[FONT="]Buenas, tengo en mente un proyecto pero soy bastante nuevo con arduino y no se como hacerlo exactamente.[/FONT]
[FONT="]La idea es la siguiente: Quiero usar un [/FONT]anemometro [FONT="]y medir el viento constantemente. Según las especificaciones del producto tiene un imán que al dar una vuelta completa las aspas manda una señal digital. Una vuelta en un segundo equivale a una velocidad de viento de 2.4 km/h.[/FONT]
[FONT="]Lo que no se es como hacer esto ultimo, que me lea en un segundo cuantas veces ha recibido ese 1 digital para poder hacer el calculo del viento. Os pongo el código que he escrito que seguramente no tenga sentido pero como ya he dicho soy un noob.
[/FONT][FONT="]float vueltas;[/FONT]
[FONT="]#define anemometro 3[/FONT]
[FONT="]int lectura;[/FONT]
[FONT="]float velocidadViento;[/FONT]
[FONT="]int suma;[/FONT]
[FONT="]unsigned long tiempo;[/FONT]
[FONT="]void setup() {[/FONT]
[FONT="] pinMode(anemometro, INPUT);[/FONT]
[FONT="] Serial.begin(9600);[/FONT]
[FONT="]}[/FONT]
[FONT="]void loop() {[/FONT]
[FONT="] //una vuelta al segundo son 2.4kmh[/FONT]
[FONT="] lectura = digitalRead(anemometro);[/FONT]
[FONT="] while (lectura == 0) {[/FONT]
[FONT="] lectura = digitalRead(anemometro);[/FONT]
[FONT="] }[/FONT]
[FONT="] if(lectura==1){[/FONT]
[FONT="] tiempo=millis();[/FONT]
[FONT="] if(millis()-tiempo<1000){[/FONT]
[FONT="] lectura = digitalRead(anemometro);[/FONT]
[FONT="] while(lectura==0){[/FONT]
[FONT="] lectura=digitalRead(anemometro);[/FONT]
[FONT="] [/FONT]
[FONT="] }[/FONT]
[FONT="] if(lectura==1){[/FONT]
[FONT="] suma+=lectura;[/FONT]
[FONT="] Serial.print("hola");[/FONT]
[FONT="] }[/FONT]
[FONT="] }[/FONT]
[FONT="] [/FONT]
[FONT="] [/FONT]
[FONT="] }[/FONT]
[FONT="] /*velocidadViento = lectura * 2.4;[/FONT]
[FONT="] if (velocidadViento > 40 && velocidadViento < 87) {[/FONT]
[FONT="] Serial.print("El viento es fuerte, de: ");[/FONT]
[FONT="] Serial.print(velocidadViento);[/FONT]
[FONT="] Serial.println("km/h");[/FONT]
[FONT="] }[/FONT]
[FONT="] else if (velocidadViento > 87) {[/FONT]
[FONT="] Serial.print("El viento es extremo, de: ");[/FONT]
[FONT="] Serial.print(velocidadViento);[/FONT]
[FONT="] Serial.println("km/h");[/FONT]
[FONT="] }[/FONT]
[FONT="] else {[/FONT]
[FONT="] Serial.print("El viento es normal, de: ");[/FONT]
[FONT="] Serial.print(velocidadViento);[/FONT]
[FONT="] Serial.println("km/h");[/FONT]
[FONT="] }*/[/FONT]
[FONT="]}[/FONT]
[FONT="]La idea es la siguiente: Quiero usar un [/FONT]anemometro [FONT="]y medir el viento constantemente. Según las especificaciones del producto tiene un imán que al dar una vuelta completa las aspas manda una señal digital. Una vuelta en un segundo equivale a una velocidad de viento de 2.4 km/h.[/FONT]
[FONT="]Lo que no se es como hacer esto ultimo, que me lea en un segundo cuantas veces ha recibido ese 1 digital para poder hacer el calculo del viento. Os pongo el código que he escrito que seguramente no tenga sentido pero como ya he dicho soy un noob.
[/FONT][FONT="]float vueltas;[/FONT]
[FONT="]#define anemometro 3[/FONT]
[FONT="]int lectura;[/FONT]
[FONT="]float velocidadViento;[/FONT]
[FONT="]int suma;[/FONT]
[FONT="]unsigned long tiempo;[/FONT]
[FONT="]void setup() {[/FONT]
[FONT="] pinMode(anemometro, INPUT);[/FONT]
[FONT="] Serial.begin(9600);[/FONT]
[FONT="]}[/FONT]
[FONT="]void loop() {[/FONT]
[FONT="] //una vuelta al segundo son 2.4kmh[/FONT]
[FONT="] lectura = digitalRead(anemometro);[/FONT]
[FONT="] while (lectura == 0) {[/FONT]
[FONT="] lectura = digitalRead(anemometro);[/FONT]
[FONT="] }[/FONT]
[FONT="] if(lectura==1){[/FONT]
[FONT="] tiempo=millis();[/FONT]
[FONT="] if(millis()-tiempo<1000){[/FONT]
[FONT="] lectura = digitalRead(anemometro);[/FONT]
[FONT="] while(lectura==0){[/FONT]
[FONT="] lectura=digitalRead(anemometro);[/FONT]
[FONT="] [/FONT]
[FONT="] }[/FONT]
[FONT="] if(lectura==1){[/FONT]
[FONT="] suma+=lectura;[/FONT]
[FONT="] Serial.print("hola");[/FONT]
[FONT="] }[/FONT]
[FONT="] }[/FONT]
[FONT="] [/FONT]
[FONT="] [/FONT]
[FONT="] }[/FONT]
[FONT="] /*velocidadViento = lectura * 2.4;[/FONT]
[FONT="] if (velocidadViento > 40 && velocidadViento < 87) {[/FONT]
[FONT="] Serial.print("El viento es fuerte, de: ");[/FONT]
[FONT="] Serial.print(velocidadViento);[/FONT]
[FONT="] Serial.println("km/h");[/FONT]
[FONT="] }[/FONT]
[FONT="] else if (velocidadViento > 87) {[/FONT]
[FONT="] Serial.print("El viento es extremo, de: ");[/FONT]
[FONT="] Serial.print(velocidadViento);[/FONT]
[FONT="] Serial.println("km/h");[/FONT]
[FONT="] }[/FONT]
[FONT="] else {[/FONT]
[FONT="] Serial.print("El viento es normal, de: ");[/FONT]
[FONT="] Serial.print(velocidadViento);[/FONT]
[FONT="] Serial.println("km/h");[/FONT]
[FONT="] }*/[/FONT]
[FONT="]}[/FONT]