เล่นกับ ATtiny85

ช่วงนี้ผมคลุกกับโปรเจคไมโครคอนโทรเลอเลยไม่ได้อัพบทความในเว็บเลยครับ ATtiny85 ก็เป็นอีกตัวหนึ่งที่ผมได้สั่งมาเล่น (หลังเล่น Arduino เบื่อๆแล้ว) แล้วก็พบว่ามันเปลี่ยนทุกๆอย่างที่เราออกแบบวงจรแทบตาย ให้สามารถใช้งานได้ง่ายมากๆ เช่น ก่อนหน้านี้ผมทำ วงจรเปิด-ปิดไฟกลางคืนอัตโนมัติ แล้วพบว่าวงจรนั้นทำงานไม่ตรงความต้องการซักเท่าไหร่ นำไปใช้กับไฟนอกชายคาบ้านแล้วรู้สำว่ามันติดช้าไป เพราะตรวจจับแสงอินฟาเรตที่มีในดวงอาทิตย์ มาควบคุมการเปิด-ปิดวงจร หากดวงอาทิตย์ไม่น้อยจริงๆ จะทำให้รีเลย์ไม่ทำงาน เมื่อได้ลองใช้ ATtiny85 ก็พบว่ามันนำไปใช้งานได้ง่ายมากๆ! เพราะใช้การตรวจค่าจาก LDR จับค่าไม่แม่นยำ แล้วก็มาไล่พิมพ์โค้ดง่ายๆเลย

มาถึงตรงนี้บางท่านอาจจะยังไม่ทราบว่า ATtiny85 คืออะไร ATtiny85 คือไมโครคอนโทรเลอ (หรือ MCU) มันคือไอซีที่ใช้การเขียนโปรแกรมอัดเข้าไปเพื่อให้ตัวมันทำงาน โดยเราสามารถจะสั่งให้มันทำอะไรก็ได้ (แต่ต้องมีฟังก์ชั่นหรือไลบารี่รองรับ สั่งให้ไปซื้อกาแฟคงไม่ใช่ . . .)

ATtiny85

ลักษณะการวางขาของไอซี ATtiny85

ATtiny85 มีขาทั้งหมด 8 ขาใช้งานด้วยกัน แบ่งเป็นขา VCC (ขา 8) GND (ขา 4) และ Reset (ขา 1) รวม 3 ขา เหลืออีก 5 ขาได้ใช้งานกัน มี 3 ขาเป็นอนาล็อกอินพุต (Analog Input) ที่ขา 3 ขา 4  และขา 7 อีก 2 ขาเป็นขาพัลส์ หรือขาดิจิตอล

ถึงแม้จะมี 3 ขาที่ระบุว่าเป็นอนาล็อตอินพุตก็สามารถนำมาใช้งานแบบเดียวกับขาพัลส์ แต่ขาพัลส์ไม่สามารถนำมาใช้งานได้แบบเดียวกับขาที่เป็นอนาล็อตอินพุตได้ เนื่องจากไม่มีวงจรแปลงให้อนาล็อกเป็นดิจิตอล

ต่อไปก็มาเริ่มลองเล่นกันเลยครับ แต่ก่อนจะลองเล่น ไปทำให้ Arduino ของเราเป็นเครื่องโปรแกรมก่อน เรียกว่า Arduino ISP อ่านวิธีการทำได้ที่ Attiny85 สอน วิธี ใช้งาน Attiny85 Arduino IC Attiny85 ราคาถูก อีกตัวที่น่าเล่น

สำหรับ Arduino IDE เวอร์ชั่น 1.6.x สามารถโหลดไฟล์ได้ที่ : ide-1.6.x.zip ไปวางไว้ใน Documents\Arduino\hardware ครับ (ถ้ามีของเก่าอยู่ ให้ลบทิ้งก่อน)

ลองเล่น ATtiny85 ทำไฟกระพริบ

เปิดโปรแกรม Arduino ขึ้นมา เลือกบอร์ดเป็น ATtiny85 เลือกพอร์ตที่ต่ออยู่ และเลือกโปรแกรมเมอร์เป็น Arduino as ISP

 

แล้วทดสอบเบิร์นโปรแกรมนี้ลงไป

/*
 Blink
 Turns on an LED on for one second, then off for one second, repeatedly.
 
 This example code is in the public domain.
 */
 
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 0;

// the setup routine runs once when you press reset:
void setup() { 
 // initialize the digital pin as an output.
 pinMode(led, OUTPUT); 
}

// the loop routine runs over and over again forever:
void loop() {
 digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
 delay(1000); // wait for a second
 digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
 delay(1000); // wait for a second
}

แล้วต่อวงจรตามนี้เลยครับ

เมื่อต่อวงจรครบ จ่ายไฟเข้าแล้ว เราจะได้ไฟกระพริบครับ
จากโค้ด อธิบายได้ว่า วนลูปให้เปิด ปิดไฟ ทุกๆ 1 วินาที

 ลองเล่น ATtiny85 ทำไฟเปิด-ปิดกลางคืนอัตโนมัติ

ต่อมา มาลองใช้งาน ATtiny85 เป็นวงจรเปิด-ปิดไฟกลางคืนอัตโนมัติครับ เบิร์นโปรแกรมนี้ลงไป

int LDR_Pin = 3; //analog pin 0
int led = 0;
boolean LEDON = false;

void setup(){
 pinMode(led, OUTPUT);
}

void loop(){
  int LDRReading = analogRead(LDR_Pin); 
 
  if (LDRReading < 400){
    if (LEDON == false){
      digitalWrite(led, HIGH);
      LEDON = true;
    }
  }else{
    if (LEDON == true){
      digitalWrite(led, LOW);
      LEDON = false;
    }
  }
}

แล้วต่อวงจรตามนี้

เมื่อทดสอบนำ LDR ไปไว้ในที่ ที่มีแสงมาพอ ตัว LED จะดับ และจะติดเมื่อนำมือปิดแสงไว้ ไม่ให้ส่องถึง LDR

นี่คือตัวอย่างของวงจรที่เราจะทำไปใช้งานได้เท่านั้น เราสามารถนำ ATtiny85 นั้นไปใช้งานได้หลากหลาย เพราะมีขนาดเล็ก รวมถึงรองรับไลบารี่สำคัญๆมากมาย และไม่ต้องใช้อุปกรณ์ต่อร่วมใดๆเลย

ข้อควรระวัง เนื่องจากไอซีตัวนี้เป็นไมโครคอนโทรเลอร์ จึงใช้งานมันแบบสมบุกสมบันไม่ได้ ควรระวังเรื่องกระแสไหลเกิน หากต้องการใช้งานกระแสมากกว่า 50mA แนะนำให้ใช้งานร่วมออปโต้จะดีกว่าครับ (เสียขึ้นมา ราคาหลายบาทเลย)

1 comment

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *