-วันนี้ก็ได้อธิบายโปรเจ็คที่ทำร่วมกับพี่ๆที่พวกเราเข้าไปช่วย
-ได้นำหาแนวคิดที่ได้ไปประยุกต์ใช้กับที่บ้านเราและการทำงานในอนาคต
-วันนี้ก็ได้เล่าถึงปัญหาและข้อดีที่ได้มาอยู่กรุงเทพกัน
-สิ่งที่คาดหวังจะได้กลับไปจากfibo คือได้เปิดโลกมุมมองสิ่งต่างๆใหม่ๆหลากหลาย แล้วนำกับไปถ่ายทอดสิ่งใหม่เพื่อพัฒนาตนเองให้ดียิ่งขึ้น
http://www.arduino.cc/en/Reference/AttachInterrupt
ตัวอย่างโค้ดการใช้ interrup ใน arduino ตัวอย่าง attachInterrupt()
ปัญหาที่เกิดขึ้นก็จะได้แก่ การที่กด interrupt แล้วมันนับค่าไปสองค่า แล้วแก้ที่codeโดยและใช้ delayนานขึ้น attachInterrupt(0, blink,
int pin = 13;
volatile int state = LOW;
void setup()
{
pinMode(pin, OUTPUT);
attachInterrupt(0, blink, CHANGE);
}
void loop()
{
digitalWrite(pin, state);
}
void blink()
{
state = !state;
}
ตัวอย่างโค้ดที่ทำเอง ตัวที่1
int pin1 = 13;
int pin2 = 12;
int pin3 = 11;
int pin4 = 10;
int pin5 = 9;
int pin6 = 8;
void setup()
{
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
pinMode(pin5, OUTPUT);
pinMode(pin6, OUTPUT);
attachInterrupt(0, blink, CHANGE );
}
void loop()
{
digitalWrite(pin4,HIGH);
delay(500);
digitalWrite(pin4,LOW);
delay(500);
digitalWrite(pin5,HIGH);
delay(500);
digitalWrite(pin5,LOW);
delay(500);
digitalWrite(pin6,HIGH);
delay(500);
digitalWrite(pin6,LOW);
delay(500);
}
void blink()
{
digitalWrite(pin2,HIGH);
delay(10000);
digitalWrite(pin2,LOW);
delay(10000);
digitalWrite(pin3,HIGH);
delay(5000);
digitalWrite(pin3,LOW);
delay(5000);
}
ตัวอย่างโค้ดที่ทำเอง ตัวที่2
int A = 6;
int B = 7;
int C = 8;
int D = 9;
int E = 10;
int F = 11;
int G = 12;
int CO1 = 5;
int CO2 = 4;
int CO3 = A2;
const int segs[7] = { A, B, C, D, E, F, G };
const byte numbers[10] = { 0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, 0b1101101,0b1111101, 0b0000111, 0b1111111, 0b1101111 };
int digit1 = 0;
int digit2 = 0;
int digit3 = 0;
int counter= 0;
void setup() {
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(CO1, OUTPUT);
pinMode(CO2, OUTPUT);
pinMode(CO3, OUTPUT);
pinMode(2,INPUT_PULLUP);
pinMode(3,INPUT_PULLUP);
pinMode(14,INPUT_PULLUP);
pinMode(15,INPUT_PULLUP);
attachInterrupt(1, wap, LOW);
}
void loop() {
lightDigit3(numbers[digit3]);
delay(3);
lightDigit2(numbers[digit2]);
delay(3);
lightDigit1(numbers[digit1]);
delay(3);
if(digitalRead(14)==LOW){
counter+=10;
digit3 = counter%10;
digit2 = (counter%100)/10;
digit1 = (counter%1000)/100;
}
if(digitalRead(2)==LOW){
counter--;
digit3 = counter%10;
digit2 = (counter%100)/10;
digit1 = (counter%1000)/100;
if(digit3<0){
digit3=0;
counter=0;
}
}
while(digitalRead(2)==LOW);
if(digitalRead(15)==LOW){
counter-=10;
digit3 = counter%10;
digit2 = (counter%100)/10;
digit1 = (counter%1000)/100;
if(digit2<0){
digit2=0;
digit3=0;
counter=0;
}
}
while(digitalRead(15)==LOW);
}
void lightDigit1(byte number) {
digitalWrite(CO1, HIGH);
digitalWrite(CO2, HIGH);
digitalWrite(CO3,LOW);
Segments(number);
}
void lightDigit2(byte number) {
digitalWrite(CO1, HIGH);
digitalWrite(CO2, LOW);
digitalWrite(CO3, HIGH);
Segments(number);
}
void lightDigit3(byte number) {
digitalWrite(CO1, LOW);
digitalWrite(CO2, HIGH);
digitalWrite(CO3,HIGH);
Segments(number);
}
void Segments(byte number) {
for (int i = 0; i < 7; i++) {
int bit = bitRead(number, i);
digitalWrite(segs[i], bit);
}
}
void wap(){
counter++;
digit3 = counter%10;
digit2 = (counter%100)/10;
digit1 = (counter%1000)/100;
while(digitalRead(3)==LOW);
}
รูปวงจร ของ LDR
int tempPin = 0;
void setup()
{
analogReference(INTERNAL);
}
void loop()
{
reading = analogRead(tempPin);
tempC = reading / 9.31;
}
http://bildr.org/2012/11/photoresistor-arduino/
โค้ดทำขึ้นเอง แสดงออก 7segment 3ตัว
int LDR_Pin = A0; //analog pin 0
int A = 6;
int B = 7;
int C = 8;
int D = 9;
int E = 10;
int F = 11;
int G = 12; //pin6 to pin12 is A-G
int CO1 = 5;
int CO2 = 4;
int CO3 = A2; //pin4 5 และ A2 คือให้ตัวแปล CO1-CO3
const int segs[7] = { A, B, C, D, E, F, G };
const byte numbers[10] = { 0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, 0b1101101,0b1111101, 0b0000111, 0b1111111, 0b1101111 };
int digit1 = 0;
int digit2 = 0;
int digit3 = 0;
void setup() {
Serial.begin(9600); //อ่านค่า LDR
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(CO1, OUTPUT);
pinMode(CO2, OUTPUT);
pinMode(CO3, OUTPUT); //สั่ง A-G และ CO1-CO3 เป็น OUTPUT
}
void loop() {
int LDRReading = analogRead(LDR_Pin); //อ่านค่า LDR แล้วไปเก็บในLDRReading
lightDigit3(numbers[digit3]); //เรียกใช้ฟังก์ชัน lightDigit3 ที่อยู่ด้านล่าง
delay(15);
lightDigit2(numbers[digit2]); //เรียกใช้ฟังก์ชัน lightDigit2 ที่อยู่ด้านล่าง
delay(15);
lightDigit1(numbers[digit1]); //เรียกใช้ฟังก์ชัน lightDigit1 ที่อยู่ด้านล่าง
delay(15);
digit3 = LDRReading%10;
digit2 = (LDRReading%100)/10;
digit1 = (LDRReading%1000)/100; //ได้ค่าLDRReading แล้วนำมาคำนวนเพื่อแสดงออก segment แต่ละตัว
Serial.println(LDRReading); //แสดงmonitor ในโปรแกรม
delay(80);
}
void lightDigit1(byte number) { //แสดง segment ตัวที่3
digitalWrite(CO1, HIGH);
digitalWrite(CO2, HIGH);
digitalWrite(CO3,LOW);
Segments(number);
}
void lightDigit2(byte number) { //แสดง segment ตัวที่2
digitalWrite(CO1, HIGH);
digitalWrite(CO2, LOW);
digitalWrite(CO3, HIGH);
Segments(number);
}
void lightDigit3(byte number) { //แสดง segment ตัวที่1
digitalWrite(CO1, LOW);
digitalWrite(CO2, HIGH);
digitalWrite(CO3,HIGH);
Segments(number);
}
void Segments(byte number) {
for (int i = 0; i < 7; i++) {
int bit = bitRead(number, i);
digitalWrite(segs[i], bit);
}
}
http://playground.arduino.cc/Main/LM35HigherResolution
arduino +LM35 วัดอุณหภูมิ ทฤษฏี temp = (5.0 * analogRead(tempPin) * 100.0) / 1024;
เพื่อหาองศาเซลเซียส
ตัวอย่างโค้ด
float tempC;
int reading;int tempPin = 0;
void setup()
{
analogReference(INTERNAL);
}
void loop()
{
reading = analogRead(tempPin);
tempC = reading / 9.31;
}
โค้ดตัวนี้เป็นโค้ดที่ก๊อปมา ยังไม่มีการทำขึ้นเอง








ไม่มีความคิดเห็น:
แสดงความคิดเห็น