Alkoholmätare 2. Arduino (6 / 10 steg)
Steg 6: kod
#include < Adafruit_Thermal.h >
#define qtyLED 6 //Declare mängden lysdioder för stapeldiagrammet
< adafruit_thermal.h >< br > #include < SoftwareSerial.h >< softwareserial.h >
SoftwareSerial mySerial (0, 1);
Adafruit_Thermal skrivare (& mySerial);
int printer_RX_Pin = 0;
int printer_TX_Pin = 1;
int lysdioder [qtyLED]; Matris för lagring av påstår av lysdioder
int sensorPin = 0; Variabel som kommer att hålla det aktuella värdet för sensorn
int tid; Variabel som kommer att hålla tiden för sensorn att läsa
int maxreading; Variabel för att lagra det högsta värdet läsa under den sista behandlingen
För loop räknar variabler
int i;
int j;
void setup()
{
mySerial.begin(19200);
Printer.BEGIN(); < /softwareserial.h >< /adafruit_thermal.h >
Initiera variablerna räknande
Jag = 0;
j = 2;
While(i < qtyLED) //While jag är mindre än antalet definieras lysdioder
{//...save värdet i + 2 den lysdioder array. vi lägger 2 så att den representerar en av våra digitala pins
Lysdioder [i] = j;
i ++;
j ++;
}
för (jag = 0; jag < qtyled; i ++) definierar = "" = "" ledde = "" stift = "" som = "" utgångar. = "" i = "" denna = "" fallet = "" 2-= "" > 7
{
pinMode (lysdioder [i], produktionen);
}
pinMode (13, OUTPUT); Definiera stift 13 som en utgång så vi kan visa när vi inte tar en läsning från sensorn (Blinkin
//... Eller när vi tar en läsning från sensorn (fast)
} < / qtyled; i ++) >
void loop()
{
PORTB = PORTB ^ 100000; Invertera stift 13 att ge LED en blinkande effekt
Delay(100); Fördröja så att användaren kan se blinkandet hända
int sensor = analogRead(sensorPin); Läsa värdet sensorer och lagrar det i variabeln sensor
om (sensor > = 40) //If värdet är mindre som 40 (värde för kemikalien som används i det här exemplet)
{printer.println ("Breathalyzer 2.Arduino"), //printer kommer att börja och skriva ut den första satsen (om värdet är mindre än 40)
Printer.Print ("Hej! Titta på dig! ");
Printer.Print ("du är nykter! Det är en shocker!");
Printer.feed();
Printer.println ("nu snabbt, innan dina vänner ringer du tillbaka över för den nästa skott du bör bara gå hem");
Printer.println (inte Netflix och en säng ljud kul?");
Printer.println ("om att inte kittla din fantasi och du tänker dricka ikväll Vänligen ring");
Printer.feed();
Printer.println("*850.433.3333*");
Printer.feed();
Printer.feed();
Printer.feed();
Printer.println ("i underhållningssyfte endast");
Printer.feed();
}
{
digitalWrite 13, hög. Slå på den blå LED-indecating att sensorn upptäckt en minimal mängd av alkohol (sensor > = 40)
maxreading = 0; Initiera max läsande till 0
för (tid = 0; tid < = 5000; tid ++) //Read sensorn i 5 sekunder
{//...every millisekund uppdatera värdet för max läsningen av sensorn
int sensor = analogRead(sensorPin);
Delay(1);
IF(sensor > maxreading)
{
maxreading = sensor;
}
digitalWrite 13, låg. När behandlingen är klar stäng av blå LED
int nivå = karta (maxreading, 0, 200, 0, qtyLED); Mappa värden från 0 till 200 (behandlingen från sensor) till 0 och antal lysdioder som är 6
//... 0 till 6(LEDs) nivå avgör hur många av dem slå på.
för (jag = 0; jag < qtyled; i ++) jämföra = "" alla = "" = "" lysdioder = "" nuvarande = "" state = "" med = "" värde = "" av = "" nivå = "" som = "" var = "" läsa = "" = "" {= "" om = "" för = "" exempel = "" 5, = "" sedan = "" 2-= "" > 6 skulle vända på.
om (jag < nivå) //If nuvarande LED som kontrolleras är mindre som nivån
{printer.println ("Breathalyzer 2.Arduino");//printer startar den och skriva ut den första satsen (om värdet är mellan 40 och max)
Printer.Print ("Tja Tja Tja...");
Printer.Print ("det ser ut som du har haft lite att dricka. Du bör nog sluta nu. Det är vad alla the cool kids gör");
Printer.feed();
Printer.println ("Dessutom du verkligen vill vara att killen?");
Printer.println ("gå nu, betala din bar fliken och ringer");
Printer.feed();
Printer.println("*850.433.3333*");
Printer.feed();
Printer.feed();
Printer.feed();
Printer.println ("i underhållningssyfte endast");
Printer.feed(); {
digitalWrite (LED [i], hög); //... Slå på den
}
}
annat //If nuvarande LED som kontrolleras är högre än nivån
{
digitalWrite (LED [i], låg); //... Stänga av
}
{printer.println ("Breathalyzer 2.Arduino");//printer startar den och skriva ut den första satsen (om värdet är på högsta nivå)
Printer.Print ("heta DOGGY");
Printer.Print ("du är så full som en SKUNK!");
Printer.println ("jag kunde berätta ganska mycket något just nu och du skulle inte minns det);
Printer.feed();
Printer.println ("fajksdfjalksfjalkdfja, l").
Printer.println ("skojar bara! Men allvarligt, du bör förmodligen lägga att öl ner och kallar");
Printer.feed();
Printer.println("*850.433.3333*");
Printer.println ("det är läggdags.");
Printer.feed();
Printer.feed();
Printer.feed();
Printer.println ("i underhållningssyfte endast");
Printer.feed();
}
}
Delay(10000); Vänta 10 sekunder för att användaren ska få behandlingen från det led stapeldiagrammet
för (jag = 0; jag < qtyled; i ++) vända = "" off = "" alla = "" = "" lysdioder = "" = "" {= "" digitalwrite(leds[i],low); = ""} = ""} < = "" p = "" >< / qtyled; i ++) >< / qtyled; i ++) >], låg);
}
}
}
}