Paso 6: código de
#include <Adafruit_Thermal.h>
#define qtyLED 6 //Declare the quantity of LED's for the bar graph
<adafruit_thermal.h><br>#include <SoftwareSerial.h><softwareserial.h> SoftwareSerial mySerial(0, 1); Adafruit_Thermal printer(&mySerial); int printer_RX_Pin = 0; int printer_TX_Pin = 1; int LEDs[qtyLED]; //Array to store the states of the LEDs int sensorPin = 0; //Variable that will hold the current value of the sensor int time; //Variable that will hold the amount of time for the sensor to be read int maxreading; //Variable to store the maximum value read during the last reading //For loop counting variables int i; int j; void setup() { mySerial.begin(19200); printer.begin();</softwareserial.h></adafruit_thermal.h>
//Initialize the counting variables i=0; j=2; while(i < qtyLED) //While i is less than the number of defined LED's { //...save the value of i+2 in the LEDs array. we add 2 so that it represents one of our digital pins LEDs[i] = j; i++; j++; } for(i=0;i<qtyled;i++) define="" the="" led="" pins="" as="" outputs.="" in="" this="" case="" 2-="">7 { pinMode(LEDs[i], OUTPUT); } pinMode(13, OUTPUT); //Define pin 13 as an output so we can show when we are not taking a reading from the sensor(Blinkin //...Or when we are taking a reading from the sensor (Solid) }</qtyled;i++)>
void loop() { PORTB = PORTB ^ 100000; //Invert pin 13 to give the LED a blinking effect delay(100); //Delay so that the user can see the blinking happen int sensor = analogRead(sensorPin); //Read the sensors value and store it in the sensor variable if(sensor >= 40) //If the value is less that 40(value for the chemical being used in this example) { printer.println("Breathalyzer 2.Arduino"); //printer will start and print the first statement (if the value is less than 40) printer.print("Hey! Look at you! "); printer.print("You are sober!! That's a shocker!"); printer.feed(); printer.println("Now quick, before your friends call you back over for that next shot you should just go home"); printer.println("Doesn't Netflix and a bed sound fun?"); printer.println("If that doesn't tickle your fancy and you plan on drinking tonight please call"); printer.feed(); printer.println("*850.433.3333*"); printer.feed(); printer.feed(); printer.feed(); printer.println("For entertainment purposes only"); printer.feed(); } { digitalWrite(13, HIGH); //Turn on the blue LED indecating that the sensor detected a minimal amount of alcohol (sensor >= 40) maxreading = 0; //Initiate the max reading to 0 for(time = 0;time <= 5000;time++) //Read the sensor for 5 seconds { //...every millisecond update the value of the max reading of the sensor int sensor = analogRead(sensorPin); delay(1); if(sensor > maxreading) { maxreading = sensor; } digitalWrite(13, LOW); //As soon as the reading is complete turn off the blue LED int level = map(maxreading, 0, 200, 0, qtyLED); //Map the value from 0 to 200(reading from sensor) to 0 and the number of LEDs which is 6 //...0 to 6(LEDs) level determines how many of them turn on. for(i=0;i<qtyled;i++) compare="" all="" the="" leds="" current="" state="" with="" value="" of="" level="" that="" was="" read="" ="" {="" if="" for="" example="" 5,="" then="" 2-="">6 would turn on. if (i < level) //If the current LED being checked is less that the level { printer.println("Breathalyzer 2.Arduino");//printer will start and print the first statement (if the value is between 40 and the max) printer.print("Well well well...."); printer.print("It looks like you've had a bit to drink. You should probably stop now. That's what all the cool kids are doing"); printer.feed(); printer.println("Besides, do you really want to be THAT GUY?"); printer.println("Now, go pay your bar tab and please call"); printer.feed(); printer.println("*850.433.3333*"); printer.feed(); printer.feed(); printer.feed(); printer.println("For entertainment purposes only"); printer.feed();{ digitalWrite(LEDs[i], HIGH); //...Turn it on } } else //If the current LED being checked is higher than the level { digitalWrite(LEDs[i], LOW); //...Turn it off } { printer.println("Breathalyzer 2.Arduino");//printer will start and print the first statement (if the value is at the maximum level) printer.print("HOT DOGGY"); printer.print("You are as drunk as a SKUNK!!"); printer.println("I could tell you pretty much anything right now and you wouldn't remember it"); printer.feed(); printer.println("fajksdfjalksfjalkdfja;l "); printer.println("Just Kidding! But Seriously, you should probably put that beer down and call"); printer.feed(); printer.println("*850.433.3333*"); printer.println("It's bedtime."); printer.feed(); printer.feed(); printer.feed(); printer.println("For entertainment purposes only"); printer.feed(); } } delay(10000); //Wait 10 seconds for the user to get the reading from the led bar graph for(i=0;i<qtyled;i++) turn="" off="" all="" the="" leds="" ="" {="" digitalwrite(leds[i],low);="" }="" }<="" p=""></qtyled;i++)></qtyled;i++)>],LOW);
} } } }