Đây là một dự án Arduino thực sự thú vị , nó dùng để đọc nhiệt độ, gửi thông tin về Arduino và dùng đèn LED để chỉ thị. Linh kiện để thực hiện dự án này:
• Arduino Uno
• ít breadboard
• Dây nối loại đực – đực
• Một LED màu xanh
• 8 LED màu xanh lá cây
• Hai đèn LED đỏ
• 11 Điện trở 560 Ohm
• Cảm biến nhiệt TMP36 (hoặc TMP35)
Bước 1: Gắn led theo sơ đồ bên dưới
Các LED sẽ mắc nối tiếp với điện trở 560 ôm và đấu xuống mass. Các chân dương của LED nối về board Arduino.
Bước 2: Kiểm tra các LED
Dùng chương trình Blink (trong phần mềm lập trình Arduino) , thay đổi biến led để kiểm tra
int led = 2;// thay đổi số chân tương ứng để kiểm tra LED
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
}
Bước 3: kết nối với TMP36 (hoặc TMP35)
Cảm biến TMP36 có 3 chân. Kết nối theo sơ đồ chân của cảm biến vào breadboard. Chân số 1 nối với nguồn, chân số 2 kết nối với 0 hoặc A0 trên Arduino, chân 3 nối với mass.
Code kiểm tra TMP36
int temperaturePin = 0;void setup(){ Serial.begin(9600); } void loop() { float temperature = getVoltage(temperaturePin); temperature = (temperature - .5) * 100; Serial.println(temperature); delay(1000); }float getVoltage(int pin){ return (analogRead(pin) * .004882814); }Bước 4:
Viết code
int temperaturePin = 0;int temp = A0;int blue1 = 2;int green1 = 3;int green2 = 4;int green3 = 5;int green4 = 6;int green5 = 7;int green6 = 8;int green7 = 9;int green8 = 10;int red1 = 11;int red2 = 12;void setup(){ Serial.begin(9600); pinMode(blue1, OUTPUT); pinMode(green1, OUTPUT); pinMode(green2, OUTPUT); pinMode(green3, OUTPUT); pinMode(green4, OUTPUT); pinMode(green5, OUTPUT); pinMode(green6, OUTPUT); pinMode(green7, OUTPUT); pinMode(green8, OUTPUT); pinMode(red1, OUTPUT); pinMode(red2, OUTPUT); } void loop(){
float temperature = getVoltage(temperaturePin); //Lấy giá trị điện thế từ chân cảm biến temperature = (temperature - .5) * 100; //converting from 10 mv per degree wit 500 mV offset//to degrees ((volatge - 500mV) times 100) Serial.println(temperature); //printing the result delay(1000);</p><p> if(temperature>=3.00){digitalWrite(blue1,HIGH);} if(temperature>=6.00){digitalWrite(blue1,HIGH);digitalWrite(green1,HIGH);} if(temperature>=8.00){digitalWrite(blue1,HIGH);digitalWrite(green1,HIGH);digitalWrite(green2,HIGH);} if(temperature>=10.00){digitalWrite(blue1,HIGH);digitalWrite(green1,HIGH);digitalWrite(green2,HIGH);digitalWrite(green3,HIGH);} if(temperature>=13.00){digitalWrite(blue1,HIGH);digitalWrite(green1,HIGH);digitalWrite(green2,HIGH);digitalWrite(green3,HIGH);digitalWrite(green4,HIGH);} if(temperature>=15.00){digitalWrite(blue1,HIGH);digitalWrite(green1,HIGH);digitalWrite(green2,HIGH);digitalWrite(green3,HIGH);digitalWrite(green4,HIGH);digitalWrite(green5,HIGH);} if(temperature>=20.00){digitalWrite(blue1,HIGH);digitalWrite(green1,HIGH);digitalWrite(green2,HIGH);digitalWrite(green3,HIGH);digitalWrite(green4,HIGH);digitalWrite(green5,HIGH);digitalWrite(green6,HIGH);} if(temperature>=23.00){digitalWrite(blue1,HIGH);digitalWrite(green1,HIGH);digitalWrite(green2,HIGH);digitalWrite(green3,HIGH);digitalWrite(green4,HIGH);digitalWrite(green5,HIGH);digitalWrite(green6,HIGH);digitalWrite(green7,HIGH);} if(temperature>=25.00){digitalWrite(blue1,HIGH);digitalWrite(green1,HIGH);digitalWrite(green2,HIGH);digitalWrite(green3,HIGH);digitalWrite(green4,HIGH);digitalWrite(green5,HIGH);digitalWrite(green6,HIGH);digitalWrite(green7,HIGH);digitalWrite(green8,HIGH);} if(temperature>=30.00){digitalWrite(blue1,HIGH);digitalWrite(green1,HIGH);digitalWrite(green2,HIGH);digitalWrite(green3,HIGH);digitalWrite(green4,HIGH);digitalWrite(green5,HIGH);digitalWrite(green6,HIGH);digitalWrite(green7,HIGH);digitalWrite(green8,HIGH);digitalWrite(red1,HIGH);} if(temperature>=35.00){digitalWrite(blue1,HIGH);digitalWrite(green1,HIGH);digitalWrite(green2,HIGH);digitalWrite(green3,HIGH);digitalWrite(green4,HIGH);digitalWrite(green5,HIGH);digitalWrite(green6,HIGH);digitalWrite(green7,HIGH);digitalWrite(green8,HIGH);digitalWrite(red1,HIGH);digitalWrite(red2,HIGH);} delay(4000); digitalWrite(blue1,LOW); digitalWrite(green1,LOW); digitalWrite(green2,LOW); digitalWrite(green3,LOW); digitalWrite(green4,LOW); digitalWrite(green5,LOW); digitalWrite(green6,LOW); digitalWrite(green7,LOW); digitalWrite(green8,LOW); digitalWrite(red1,LOW); digitalWrite(red2,LOW);}float getVoltage(int pin){ return (analogRead(pin) * .004882814); //converting from a 0 to 1023 digital range// to 0 to 5 volts (each 1 reading equals ~ 5 millivolts}Theo instructables.com
Tag :
Lập trình Arduino


