ESP8266 ADC - flera analoga sensorer (2 / 3 steg)
Steg 2: Multiplexering skriptet.
För att multiplex, kan endast en sensor ha en komplett krets i taget. Genom att ange den GPIO till hög, vi skickar ~3.0v till att sensorn och slutföra kretsen. De andra, att vara inställd på låg skicka ingen spänning. Detta skapar i huvudsak en mark till mark anslutning. Ingen aktuell.
När vi skickat spänningen, vi läser ADC PIN-koden och skriva ut värdet. Vi kan också spara värdet i en variabel.
Denna kod "var1 = adc.read(0)' kommer att fungera. Vi kan sedan manipulera värdet och konvertera som krävs.
När vi läser eller spara läsningen från sensorn, vi stänger av och flyttar till nästa sensorn.
Förseningen är inte nödvändigt, men det får mig att må bättre.
Alla GPIOs som används med analoga sensorer ska anges till låg utom när behandlingen dem.
Det finns ingen speciell anledning för att använda GPIOs 16, 14 och 12. Alla tre skulle göra. Undvik att använda GPIO0.
___________________________________
--multisensor.lua
-- ---------------
--Konfigurera pins
gpio.mode (0, gpio. OUTPUT)--GPIO 16
gpio.mode (5, gpio. OUTPUT)--GPIO 14
gpio.mode (6, gpio. OUTPUT)--GPIO 12
--Ange alla stift till låg - ingen spänning
gpio.write (0, gpio. LÅG)
gpio.write (5, gpio. LÅG)
gpio.write (6, gpio. LÅG)
--skriva ut ADC värdet med alla stift låg
skriva ut ("\nADC: både GPIOs låg start:".. ADC.Read(0))
--Skicka spänning till GPIO 16 att slutföra kretsen för denna sensor.
gpio.write (0, gpio. HÖG)
--kort fördröjning innan behandlingen, 100ms
TMR.Delay(100000)
--Läs ADC PIN-koden eller tilldela till variabel var = adc.read(0)
skriva ut ("\nADC: GPIO 16 hög LDR:".. ADC.Read(0))
--Tillbaka GPIO 16 till låg, ingen spänning.
gpio.write (0, gpio. LÅG)
--kort fördröjning 100ms
TMR.Delay(100000)
--repeat för andra två sensorer.
gpio.write (5, gpio. HÖG)
TMR.Delay(100000)
skriva ut ("ADC: GPIO 14 hög Temp:".. ADC.Read(0))
gpio.write (5, gpio. LÅG)
TMR.Delay(100000)
gpio.write (6, gpio. HÖG)
skriva ut ("ADC: GPIO 12 hög reglaget:".. ADC.Read(0))
gpio.write (6, gpio. LÅG)
--återigen läsa ADC, denna behandling bör vara mycket nära den börja läsa
skriva ut ("\nADC: både GPIOs låg slutet:"... ADC.Read(0))