LM35 Temperature Sensors (PIC16F887)http://www.youtube.com/v/9ON2-KuZx8wปรับ Vref+ (RA4)ให้ได้ 1 โวลท์นะครับ output ของ lm35 อยู่ในระดับ 10mv/c
เช่นวัดได้ 0.317 โวลท์ แปลงเป็นอุณหภูมิได้ 31.7C เป็นต้น
การเปลี่ยนแปลงไวกว่า DS1820 ใช้วัดอุณหภูมิในบรรยากาศ
ได้เป็นอย่างดี code ไม่ได้ optimize นะครับเขียนแบบด้นสด
edit1. การปรับแต่งหา digital meter ตั้งย่านวัดไม่เกิน 2volt วัดขา Vout
ของ LM35 แล้วปรับ Vref+ (RA4) ให้ค่าตรงกับ 7segment เป็นอันใช้ได้
http://www.4shared.com/rar/PuF3enX6/LM35.htmlOne Button Control 4 Relay (PIC16F887)อธิบายหน่อยนึง โปรแกรมเป็น state machine ครับ
เน้นการตอบสนองที่ราบรื่น
http://www.youtube.com/v/Ar-WbSZG3rkการควบคุมจะเป็นแบบ toggle
กด 1 ครั้ง toggle channel 1
กด 2 ครั้ง toggle channel 2
กด 3 ครั้ง toggle channel 3
กด 4 ครั้ง toggle channel 4
กดค้าง ปิดทุก channel
การกดทุกๆหนึ่งครั้งจะทำให้ COUNT+1 และ TIMERCNT จะเป็น 0
ซึ่ง TIMERCNT จะเป็นเวลาหน่วงก่อน Execute คำสั่งตามค่าของ
COUNT. ซึ่งผมตั้งไว้ที่ 500ms. การกดเพื่อควบคุม แต่ละ channel
ช่วงการกดจะต้องไม่เกิน 500ms ในแต่ล่ะช่วง
หากกดค้างไว้ไม่ว่าในช่วงใดๆก็ตามจะปิดทุก channel
ส่วนในเรื่อง Beep sound
จากการทดลอง หาก Gen. เสียงโดย toggle pin มันจะมี
ปัญหาเรื่องการตอบสนองตอนกดปุ่มซึ่งต้องไปหยุดอยู่ที่
Sound Gen. routine มันเลยสะดุดๆ ผมเลย Gen. จาก PWM
แทน ซึ่ง work มากๆ
http://www.4shared.com/rar/iDzOOF9J/OneButton_withBeep.htmlControl Servo motor (PIC16F887)มาเล่น servo motor กันมั่ง
http://www.youtube.com/v/xnzf6ghAkKIหลักการไม่มีอะไรมากครับ เอา timer 2 ตัวมาทำ โดยใช้ timer1 ทำฐานเวลา
ที่ 20 ms เพื่อ set port ทุกๆ 20ms และใช้ timer0 เป็นตัว clr port ตาม
เวลาที่กำหนด ตัวแปรการปรับมุมได้จากการอ่านค่าจาก ADC ความละเอียด
ที่ทำได้ อยูที่ 143 step
โดยอันดับแรกเมื่อ timer1 เกิด interrupt จะ set servo pin และ reload
ค่า duty ลง timer0 พร้อมกับ enable interrupt ของ timer0 เมื่อ timer0
over flow ก็จะเกิด interrupt ไป clear servo pin และปิด interrupt
ของตัว timer0 เอง เป็นโปรแกรมง่ายๆลองเอาไปต่อยอดกัน
ปล. servo ที่ผมใช้ค่าเวลากว้าง ถ้าใช้กับยี่ห้ออื่นให้ปรับที่ servo_min
กับ servo_max เอาครับ
http://www.4shared.com/rar/f7Xwjfj8/SERVO_MOTOR.html