วันศุกร์ที่ 22 พฤษภาคม พ.ศ. 2558

วันที่5 ที่Fibo

-วันนี้ทำการเขียนโปรแกรมพื้นฐาน PWM ควบคุมความเร็ว LED
-หาที่ติด limitswich แขนกลของพี่สอง กับ เรียว
-ทำการเขียนโปรแกรม แสดง 7segment 
-ผมขอบคุณพี่ๆ ที่fibo จากผมที่ไม่ได้โปรแกรมได้ สอนและช่วยผมให้ได้รู้ว่าการเขียนโปรแกรม หรือ สาขาอื่นๆก็ทำการประยุกต์ใช้งานกันได้ วงจรก็สำคัญเช่นกัน ผมเริ้มจะประยุกต์ให้กับวงจรของผมได้แล้ว (ได้มากกว่าเดิมยิ่งขึ้นๆไป)

https://www.youtube.com/watch?v=cUvcnI3f7ec คริปนี้แสดงการทำงานการ PWM analog,output digital

http://vladromanov.com/154/arduino-tutorial-2-analog-inputs-and-pulse-width-modulation-pwm-rgb-led/ ตัวอย่างการทำงาน มีคริปด้วย

https://www.google.co.th/search?q=pwm+arduino++led&biw=1280&bih=699&source=lnms&tbm=isch&sa=X&ei=N4xeVZaEGoTiuQTQpYPIAw&ved=0CAYQ_AUoAQ  เป็นรูปภาพ การใช้งาน arduino กับ LED



http://www.dave-auld.net/index.php?option=com_content&view=article&id=99:arduino-digital-out-pwm-led&catid=53:arduino-input-output-basics&Itemid=107


งานที่ทำตอนเช้าวันนี้ 



int analog = A3;    
int RValue = 0;
void setup() {
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
pinMode(8,OUTPUT);
pinMode(7,OUTPUT);
pinMode(6,OUTPUT);
pinMode(3,INPUT);
pinMode(2,INPUT);
pinMode(14,INPUT);
pinMode(15,INPUT);
}

void loop() {

   RValue = analogRead(analog);

  if(digitalRead(2)==HIGH){
  button1();
  }
   if(digitalRead(3)==HIGH){
  button2();
  }
  if(digitalRead(14)==HIGH){
  button3();
  }
  if(digitalRead(15)==HIGH){
  button4();
  }
}


void button1(){
  digitalWrite(13,HIGH);
  delay(500);
  digitalWrite(13,LOW);
  delay(500);
  digitalWrite(12,HIGH);
  delay(500);
  digitalWrite(12,LOW);
  delay(500);
  digitalWrite(11,HIGH);
  delay(500);
  digitalWrite(11,LOW);
  delay(500);
  digitalWrite(10,HIGH);
  delay(500);
 digitalWrite(10,LOW);
  delay(500);
 digitalWrite(9,HIGH);
  delay(500);
 digitalWrite(9,LOW);
  delay(500);
digitalWrite(8,HIGH);
  delay(500);
 digitalWrite(8,LOW);
  delay(500);
digitalWrite(7,HIGH);
  delay(500);
 digitalWrite(7,LOW);
  delay(500);
digitalWrite(6,HIGH);
  delay(500);
 digitalWrite(6,LOW);
  delay(500);   
void button2(){
digitalWrite(6,HIGH);
  delay(500);
 digitalWrite(6,LOW);
  delay(500); 
  digitalWrite(7,HIGH);
  delay(500);
 digitalWrite(7,LOW);
 delay(500);
 digitalWrite(8,HIGH);
  delay(500);
 digitalWrite(8,LOW);
  delay(500);
  digitalWrite(9,HIGH);
  delay(500);
 digitalWrite(9,LOW);
  delay(500);
  digitalWrite(10,HIGH);
  delay(500);
  digitalWrite(10,LOW);
  delay(500);
  digitalWrite(11,HIGH);
  delay(500);
  digitalWrite(11,LOW);
  delay(500);
  digitalWrite(12,HIGH);
  delay(500);
  digitalWrite(12,LOW);
  delay(500);
  digitalWrite(13,HIGH);
  delay(500);
 digitalWrite(13,LOW);
  delay(500);    
}
void button3(){ 
  digitalWrite(13,HIGH);
  delay(RValue);
  digitalWrite(13,LOW);
  delay(RValue);
  digitalWrite(12,HIGH);
  delay(RValue);
  digitalWrite(12,LOW);
  delay(RValue);
  digitalWrite(11,HIGH);
  delay(RValue);
  digitalWrite(11,LOW);
  delay(RValue);
  digitalWrite(10,HIGH);
   delay(RValue);
 digitalWrite(10,LOW);
   delay(RValue);
 digitalWrite(9,HIGH);
   delay(RValue);
 digitalWrite(9,LOW);
  delay(RValue);
digitalWrite(8,HIGH);
  delay(RValue);
 digitalWrite(8,LOW);
  delay(RValue);
digitalWrite(7,HIGH);
   delay(RValue);
 digitalWrite(7,LOW);
   delay(RValue);
digitalWrite(6,HIGH);
   delay(RValue);
 digitalWrite(6,LOW);
   delay(RValue);  
}
void button4(){
  digitalWrite(6,HIGH);
  delay(RValue);
  digitalWrite(6,LOW);
   delay(RValue);
  digitalWrite(7,HIGH);
   delay(RValue);
  digitalWrite(7,LOW);
   delay(RValue);
  digitalWrite(8,HIGH);
   delay(RValue);
  digitalWrite(8,LOW);
   delay(RValue);
  digitalWrite(9,HIGH);
   delay(RValue);
 digitalWrite(9,LOW);
   delay(RValue);
  digitalWrite(10,HIGH);
   delay(RValue);
 digitalWrite(10,LOW);
   delay(RValue); 
  digitalWrite(11,HIGH);
   delay(RValue);
 digitalWrite(11,LOW);
   delay(RValue); 
  digitalWrite(12,HIGH);
   delay(RValue);
 digitalWrite(12,LOW);
   delay(RValue); 
  digitalWrite(13,HIGH);
   delay(RValue);
 digitalWrite(13,LOW);
   delay(RValue);
}
ด้านบนเป็นCode ที่เข้าใจง่าย แต่ยุ่งยาก เพราะต้องเขียนเยอะ


int analog = A3;    
int RValue = 0;
void setup()
{
 for(int i=6;i<=13;i++)
 {
  pinMode(i,OUTPUT);
}
for(int j=13;j<=6;j--)
 {
  pinMode(j,OUTPUT);
}
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(14,INPUT);
pinMode(15,INPUT);

}

void loop() {
  RValue = analogRead(analog);
  if(digitalRead(2)==HIGH){
   for(int i=6;i<=13;i++){
   digitalWrite(i,HIGH);
   delay(100);
   digitalWrite(i,LOW);
   delay(100);
   }
  }
  
   if(digitalRead(3)==HIGH){
     for(int  j=13;j>=6;j--){
      digitalWrite(j,HIGH);
     delay(100);
     digitalWrite(j,LOW);
     delay(100);
   }
   }
   
 if(digitalRead(14)==HIGH){
 for(int i=6;i<=13;i++){
   digitalWrite(i,HIGH);
   delay(RValue);
   digitalWrite(i,LOW);
   delay(RValue);
 }
 }
 if(digitalRead(15)==HIGH){
 for(int j=13;j>=6;j++){
   digitalWrite(j,HIGH);
   delay(RValue);
   digitalWrite(j,LOW);
   delay(RValue);
 }
 }
}
Code ด้านบนเป็นแบบใช้ for

ทั้งสองcode การทำงานเหมือนกัน แต่คำสั่งที่ใช้ต่างกันและเข้าใจ ตามลำดับ

http://logicdesign5630183.blogspot.com/2014/09/32-7-segment-display-bcd.html

const byte SEVEN_SEG[7] = {2, 3, 4, 5, 6, 7, 8};
const byte SEVEN_SEG2[7] = { 9, 10, 11, 12, 13, 44, 45};
const byte ZeroToNine[10][7] = {{1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 0, 0, 0, 0},
  {1, 1, 0, 1, 1, 0, 1}, {1, 1, 1, 1, 0, 0, 1}, {0, 1, 1, 0, 0, 1, 1}, {1, 0, 1, 1, 0, 1, 1},
  {1, 0, 1, 1, 1, 1, 1}, {1, 1, 1, 0, 0, 0, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 0, 1, 1}
};

void setup() {
  for (int i = 0; i < 7; i++) {
    pinMode(SEVEN_SEG[i], OUTPUT);
    pinMode(SEVEN_SEG2[i], OUTPUT);
    digitalWrite(SEVEN_SEG[i], HIGH );
    digitalWrite(SEVEN_SEG2[i], HIGH );
  }
}

int count = 0;

void loop() {

  if (count <= 99) {
    for (int i = 0; i < 10; i++) {
      for (int l = 0; l < 7; l++) {
        digitalWrite(SEVEN_SEG[l], ZeroToNine[i][l] );
      }

      for (int j = 0; j < 10; j++) {
        for (int k = 0; k < 7; k++) {
          ;
          digitalWrite(SEVEN_SEG2[k], ZeroToNine[j][k] );
        }
        count++;
        delay(1000);
      }
    }
  } else count = 0;

}

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

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