Paso 2: La escritura de multiplexación.
Para multiplexar, sólo un sensor puede tener un circuito completo en un momento. Estableciendo la GPIO para alta, estamos enviando ~3.0v para que el sensor y completar el circuito. Los otros, se establece en baja no envían ningún voltaje. Esto esencialmente crea una conexión a tierra. Ninguna corriente.
Después de enviar el voltaje, leemos el pin ADC e imprimir el valor. También podemos guardar ese valor en una variable.
Este código ' var1 = adc.read(0)' va a funcionar. Entonces podemos manipular el valor y convertir como sea necesario.
Después de leer o guardar la lectura del sensor, nos lo apague y moverse al siguiente sensor.
El retraso no es necesario, pero me hace sentir mejor.
Todos los GPIOs se utiliza con sensores analógicos debe establecerse en baja excepto cuando leerlos.
No hay ninguna razón especial para usar GPIOs 16, 14 y 12. Haría tres. Evitar el uso de GPIO0.
Archivo de código fuente aquí.
___________________________________
--multisensor.lua
-- ---------------
--configurar pines
GPIO.Mode (0, gpio. SALIDA)--GPIO 16
GPIO.Mode (5, gpio. SALIDA)--GPIO 14
GPIO.Mode (6, gpio. SALIDA)--GPIO 12
--Fije todos los pines para bajo - no hay tensión
GPIO.Write (0, gpio. BAJO)
GPIO.Write (5, gpio. BAJO)
GPIO.Write (6, gpio. BAJO)
-imprimir el valor del ADC con los terminales de baja
Imprimir ("\nADC: comienzo ambos GPIOs baja:"... ADC.Read(0))
--Enviar voltaje a 16 GPIO completar el circuito para este sensor.
GPIO.Write (0, gpio. ALTA)
--breve retraso antes de la lectura, 100ms
TMR.Delay(100000)
--Leer el pin ADC o asigne a var varable = adc.read(0)
Imprimir ("\nADC: GPIO 16 alta LDR:"... ADC.Read(0))
--Retomar GPIO 16 bajo, no hay tensión.
GPIO.Write (0, gpio. BAJO)
--breve retardo de 100ms
TMR.Delay(100000)
-Repita para los otros dos sensores.
GPIO.Write (5, gpio. ALTA)
TMR.Delay(100000)
Imprimir ("ADC: GPIO 14 alta temperatura:"... ADC.Read(0))
GPIO.Write (5, gpio. BAJO)
TMR.Delay(100000)
GPIO.Write (6, gpio. ALTA)
Imprimir ("ADC: Slider GPIO 12 alto:"... ADC.Read(0))
GPIO.Write (6, gpio. BAJO)
--otra vez leer ADC, esta lectura debe ser muy cerca de la 'empezar a leer'
Imprimir ("\nADC: final de ambos GPIOs baja:"... ADC.Read(0))