Paso 4: código
Después de montar todo el circuito que tienes que hacer es obtener la base conectada a internet, y después de hecho esto es hora de subir el código a la base. Aquí está el código para cargar...
---/ / Publicar y Dashboard con fotorresistores / /---/ / esta aplicación publicará un evento cuando el haz de luz entre el LED y el fotoresistor se rompe. Publicará un evento diferente cuando la luz vuelve a estar intacta. Al igual que antes, vamos a comenzar por declarar que todo está conectado a los pernos. int led = D0; Esto es donde está conectado el LED. El otro lado va a un resistor conectado a GND. int boardLed = D7; Este es el LED que está ya en su dispositivo. En el núcleo, es el LED en la esquina superior derecha. El fotón, es junto a la clavija de D7. fotorresistencia int = A0; Esto es donde se enchufa el fotoresistor. El otro lado va al pin "power" (abajo). int potencia = A5; Este es el otro extremo de la fotorresistencia. El otro lado está conectado a la clavija "fotoresistor" (arriba). Los siguientes valores de conseguirán establecer cuando el dispositivo botas arriba y calibra: int intactValue; Este es el valor promedio que el fotorresistor Lee cuando la viga está intacta. int brokenValue; Este es el valor promedio que el fotorresistor Lee cuando la viga se rompe. int beamThreshold; Este es un valor entre ledOnValue y ledOffValue, por encima del cual asumimos el led está encendido y bajo que suponemos está apagado. bool beamBroken = false; Esta bandera se utilizará para marcar si tenemos una nueva situación o ahora. Lo usaremos en el lazo. Empezamos con la función de configuración. void setup() {/ esta parte sobre todo es la misma: pinMode(led,OUTPUT); / pin de nuestro LED es salida (iluminación del LED) pinMode(boardLed,OUTPUT); / nuestro LED a bordo es como bien pinMode(photoresistor,INPUT); / nuestro pin fotoresistor es entrada pinMode(power,OUTPUT) (leyendo el fotoresistor); / / el pin de alimentación el fotoresistor es salida (envío de potencia constante) / / escribir a continuación, el poder de la fotorresistencia al estar el máximo posible , que es 4095 en analógico. digitalWrite(power,HIGH); Puesto que cada uno configura sus leds diferentemente, también vamos a empezar por calibrar nuestra fotorresistencia. Éste va a requerir algunas entradas del usuario. En primer lugar, el LED D7 pasarán a decirle que ponga la mano delante de la viga. digitalWrite(boardLed,HIGH); Delay(2000); Luego, el D7 LED se apagará y el LED se encenderá. digitalWrite(boardLed,LOW); digitalWrite(led,HIGH); Delay(500); Ahora tomaremos algunas lecturas... int on_1 = analogRead(photoresistor); leer fotoresistor delay(200); esperar 200 milisegundos int on_2 = analogRead(photoresistor); leer fotoresistor delay(300); esperar 300 milisegundos / / ahora flash para hacernos saber que te has tomado las lecturas... digitalWrite(boardLed,HIGH); Delay(100); digitalWrite(boardLed,LOW); Delay(100); digitalWrite(boardLed,HIGH); Delay(100); digitalWrite(boardLed,LOW); Delay(100); Ahora el D7 pondrá a decirle que quite la mano... digitalWrite(boardLed,HIGH); Delay(2000); El D7 LED dará vuelta apagado.. digitalWrite(boardLed,LOW); // ... Y vamos a tomar dos lecturas más. int off_1 = analogRead(photoresistor); leer fotoresistor delay(200); esperar 200 milisegundos int off_2 = analogRead(photoresistor); leer fotoresistor delay(1000); esperar 1 segundo / Flash ahora el D7 LED encendido y apagado tres veces para hacernos saber que estamos listos para ir! digitalWrite(boardLed,HIGH); Delay(100); digitalWrite(boardLed,LOW); Delay(100); digitalWrite(boardLed,HIGH); Delay(100); digitalWrite(boardLed,LOW); Delay(100); digitalWrite(boardLed,HIGH); Delay(100); digitalWrite(boardLed,LOW); Ahora que media "en" y "off" valores para obtener una idea de lo que la resistencia será ser cuando el LED está encendido y apagado intactValue = (on_1 + on_2) / 2; brokenValue = (off_1 + off_2) / 2; Vamos a calcular el valor entre ledOn y ledOff, sobre el cual se asume que el led es en y por debajo de la que asumimos el led está apagado. beamThreshold = (intactValue + brokenValue) / 2; } / / Ahora para el bucle. void loop() {/ * en esta función de lazo, vamos a comprobar si la viga se ha rota. Cuando el estado de los cambios de la viga, se entregará un Spark.publish() a la nube para que si queremos, podemos comprobar de otros dispositivos cuando el LED esté encendido o apagado. Te también encendemos el LED D7 cuando el fotorresistor detecta un breakagse de la viga. * / if (analogRead(photoresistor) > beamThreshold) {/ * si usted está por encima del umbral, asumiremos que la viga está intacta. Si la viga estaba intacta antes, sin embargo, no necesitamos cambiar nada. Usaremos la bandera beamBroken que nos ayude a averiguar esto. Esta bandera controla el estado actual de la viga. Después de que la viga se rompe, se establece a TRUE y cuando vuelve a conectar la viga está establecida en FALSE. * / if (beamBroken == true) {/ / si la viga estaba roto antes, entonces esta es una situación nueva. / será enviar una publicación a la nube y encender el LED. / una publicación, enviar a dispositivos... Spark.Publish("beamStatus","Intact",60,Private); Y parpadeará el LED a bordo encendido y apagado. digitalWrite(boardLed,HIGH); Delay(500); digitalWrite(boardLed,LOW); Por último, establece el indicador para reflejar el estado actual de la viga. beamBroken = false; } else {/ / de lo contrario, esto no es un nuevo estado, y no tenemos que hacer nada.}} más {/ / si usted está por debajo del umbral, la viga se rompe probablemente. Si (beamBroken == false) {/ / envía una publicación... Spark.Publish("beamStatus","Broken",60,Private); Y parpadeará el LED a bordo encendido y apagado. digitalWrite(boardLed,HIGH); Delay(500); digitalWrite(boardLed,LOW); Por último, establece el indicador para reflejar el estado actual de la viga. beamBroken = true; } else {/ / de lo contrario, esto no es un nuevo estado, y no tenemos que hacer nada.}} }