วันอังคารที่ 26 พฤษภาคม พ.ศ. 2558

วันที่7 ทีfibo

-อาจารย์ประจำสาขาได้มานิเทศก์ และสอนเกี่ยวกับการใช้ชีวิต การอยู่ที่กรุงเทพการอยู่กับคนการเข้าหาคนและได้และอาจารย์ทั่ง4ท่านก็ได้เดินชมห้องแลป และที่ทำงาน
-วันนี้ก็ได้อธิบายโปรเจ็คที่ทำร่วมกับพี่ๆที่พวกเราเข้าไปช่วย
-ได้นำหาแนวคิดที่ได้ไปประยุกต์ใช้กับที่บ้านเราและการทำงานในอนาคต
-วันนี้ก็ได้เล่าถึงปัญหาและข้อดีที่ได้มาอยู่กรุงเทพกัน
-สิ่งที่คาดหวังจะได้กลับไปจากfibo คือได้เปิดโลกมุมมองสิ่งต่างๆใหม่ๆหลากหลาย แล้วนำกับไปถ่ายทอดสิ่งใหม่เพื่อพัฒนาตนเองให้ดียิ่งขึ้น



http://www.arduino.cc/en/Reference/AttachInterrupt
ตัวอย่างโค้ดการใช้ interrup ใน arduino ตัวอย่าง  attachInterrupt()
ปัญหาที่เกิดขึ้นก็จะได้แก่ การที่กด interrupt แล้วมันนับค่าไปสองค่า แล้วแก้ที่codeโดยและใช้ delayนานขึ้น attachInterrupt(0, blink, CHANGE ); ให้เป็นLOW คือให้ทำการ cockที่ขอบขาลง











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


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;
}
โค้ดตัวนี้เป็นโค้ดที่ก๊อปมา ยังไม่มีการทำขึ้นเอง

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

แสดงความคิดเห็น