สารบัญ:

เปลี่ยนสี LED โดยใช้ POT และ ATTINY85: 3 ขั้นตอน
เปลี่ยนสี LED โดยใช้ POT และ ATTINY85: 3 ขั้นตอน

วีดีโอ: เปลี่ยนสี LED โดยใช้ POT และ ATTINY85: 3 ขั้นตอน

วีดีโอ: เปลี่ยนสี LED โดยใช้ POT และ ATTINY85: 3 ขั้นตอน
วีดีโอ: หรี่ความสว่างหลอดไฟ LED ด้วย ATtiny85 PWM 2024, พฤศจิกายน
Anonim
เปลี่ยนสี LED โดยใช้ POT และ ATTINY85
เปลี่ยนสี LED โดยใช้ POT และ ATTINY85
เปลี่ยนสี LED โดยใช้ POT และ ATTINY85
เปลี่ยนสี LED โดยใช้ POT และ ATTINY85
เปลี่ยนสี LED โดยใช้ POT และ ATTINY85
เปลี่ยนสี LED โดยใช้ POT และ ATTINY85

ในโครงการนี้ เราใช้โพเทนชิออมิเตอร์ (POT) เพื่อเปลี่ยนสีใน LED โดยใช้ ATTINY85

คำจำกัดความบางอย่าง -

โพเทนชิออมิเตอร์เป็นอุปกรณ์ที่มีสกรูขนาดเล็ก / กลไกการหมุนซึ่งเมื่อหมุนแล้วจะมีความต้านทานไฟฟ้าต่างกัน คุณสามารถเห็นได้จากรูปภาพที่มีคำอธิบายประกอบด้านบนว่า POT มี 3 พิน คือ +, - และเอาต์พุต POT ใช้พลังงานจากการเชื่อมต่อพิน + และ - กับ vcc และกราวด์ตามลำดับบนแหล่งจ่ายไฟ เมื่อหมุนสกรู POT ความต้านทานเอาต์พุตจะเปลี่ยนและทำให้ LED ลดหรือเพิ่มความเข้ม. กล่าวอีกนัยหนึ่งมันเป็นตัวต้านทานแบบปรับค่าได้ ใช้ในสิ่งต่าง ๆ เช่นหรี่ไฟบ้าน

LED - เป็นแสงขนาดเล็กที่ส่องสว่างเมื่อกระแสไฟฟ้าไหลผ่าน ในกรณีนี้ เราจะใช้ LED หลากสีซึ่งมี 3 พิน หนึ่งกราวด์ (กลาง) และ 2 พินที่แสดงสีเขียวและสีแดงตามลำดับเมื่อถูกกระตุ้น

ATTINY85 - นี่คือไมโครชิปราคาประหยัดขนาดเล็กซึ่งคุณสามารถตั้งโปรแกรมได้เหมือน Arduino

ภาพรวม - เอาต์พุตจาก POT เชื่อมต่อกับ ATTINY85 เมื่อหมุนสกรู POT ค่าความต้านทานที่ต่างกันจะออกมาเป็นตัวเลขระหว่าง 0 ถึง 255 ATTINY สามารถวัดค่านี้และดำเนินการต่างกันไปตามค่าความต้านทาน POT ในกรณีนี้เราได้ตั้งโปรแกรมให้เชื่อมต่อกับ LED ดังนี้

หากตัวเลขมากกว่า 170 ให้เปลี่ยน LED เป็นสีเขียว

หากตัวเลขน้อยกว่า 170 แต่มากกว่า 85 ให้เปลี่ยน LED เป็นสีแดง

ถ้าจำนวนน้อยกว่า 85 เปิด LED สีเขียวและสีแดงซึ่งส่งผลให้ ORANGE

บอม

LED 1 x 3 ขา1 x ATTINY 85

1 x หม้อ (B100K)

1 x เขียงหั่นขนมและสายเคเบิล

1 แหล่งจ่ายไฟ

ขั้นตอนที่ 1: การเขียนโปรแกรม ATTINY85

ในแง่ของการเขียนโปรแกรม ATTINY85 โปรดดูคำแนะนำก่อนหน้าของฉัน -

รหัสแสดงอยู่ด้านล่าง บางจุดที่ควรทราบคือมีการเชื่อมต่อพิน ATTINY สองพิน, PB3, พินจริง 2, PB2, พินจริง 7 ในโหมดดิจิทัล กับ LED เพื่อให้เกิดการเปลี่ยนสี ATTINY พิน PB4 พินจริง 3 เชื่อมต่อกับ POT ในโหมดอะนาล็อก ซึ่งหมายความว่าสามารถอ่านค่าระหว่าง 0 ถึง 254 ได้ ฉันปรับแต่งโค้ดที่พบบนอินเทอร์เน็ต ดังนั้นฉันจึงรับทราบการทำงานนั้น -

โมฆะ initADC () { // *** // *** Pinout ATtiny25/45/85: // *** PDIP/SOIC/TSSOP // *** ============== ================================================= ============================== // *** // *** (PCINT5/RESET/ADC0/dW) PB5 [1]* [8] VCC // *** (PCINT3/XTAL1/CLKI/OC1B/ADC3) PB3 [2] [7] PB2 (SCK/USCK/SCL/ADC1/T0/INT0/PCINT2) // * ** (PCINT4/XTAL2/CLKO/OC1B/ADC2) PB4 [3] [6] PB1 (MISO/DO/AIN1/OC0B/OC1A/PCINT1) // *** GND [4] [5] PB0 (MOSI/ DI/SDA/AIN0/OC0A/OC1A/AREF/PCINT0) // *** //pb4 - อินพุตสำหรับ POT //pb3 led pin 1 //pb2 led pin 3 // ATTINY 85 ตั้งค่าความถี่ภายใน 8 MHz /* ฟังก์ชันนี้จะเริ่มต้น ADC

ADC Prescaler หมายเหตุ:

ต้องตั้งค่า ADC Prescaler เพื่อให้ความถี่อินพุต ADC อยู่ระหว่าง 50 - 200kHz

สำหรับข้อมูลเพิ่มเติม โปรดดูตารางที่ 17.5 "ADC Prescaler Selections" ในบทที่ 17.13.2 "ADCSRA – ADC Control and Status Register A" (หน้า 140 และ 141 ในแผ่นข้อมูล ATtiny25/45/85 ฉบับสมบูรณ์, Rev. 2586M–AVR–07/ 10)

ค่าพรีสเกลเลอร์ที่ถูกต้องสำหรับความเร็วสัญญาณนาฬิกาต่างๆ

นาฬิกา ค่าพรีสเกลเลอร์ที่มีจำหน่าย --------------------------------------- 1 MHz 8 (125kHz), 16 (62.5kHz) 4 MHz 32 (125kHz), 64 (62.5kHz) 8 MHz 64 (125kHz), 128 (62.5kHz) 16 MHz 128 (125kHz)

ตัวอย่างด้านล่างตั้งค่า prescaler เป็น 128 สำหรับ mcu ที่ทำงานที่ 8MHz

(ตรวจสอบแผ่นข้อมูลสำหรับค่าบิตที่เหมาะสมในการตั้งค่าพรีสเกลเลอร์) */

// ความละเอียด 8 บิต

// ตั้งค่า ADLAR เป็น 1 เพื่อเปิดใช้งานผลลัพธ์ Left-shift (มีเฉพาะบิต ADC9.. ADC2 เท่านั้น) // ดังนั้น การอ่าน ADCH เท่านั้นจึงเพียงพอสำหรับผลลัพธ์ 8 บิต (256 ค่า) DDRB |= (1 << PB3); // พินถูกตั้งค่าเป็นเอาต์พุต DDRB |= (1 << PB2); // พินถูกตั้งค่าเป็นเอาต์พุต ADMUX = (1 << ADLAR) | // ผลการเลื่อนซ้าย (0 << REFS1) | // ชุดอ้างอิง แรงดันไฟฟ้าเป็น VCC บิต 1 (0 << REFS0) | // ชุดอ้างอิง แรงดันไฟฟ้าเป็น VCC บิต 0 (0 << MUX3) | // ใช้ ADC2 สำหรับอินพุต (PB4), MUX บิต 3 (0 << MUX2) | // ใช้ ADC2 สำหรับอินพุต (PB4), MUX บิต 2 (1 << MUX1) | // ใช้ ADC2 สำหรับอินพุต (PB4), MUX บิต 1 (0 << MUX0); // ใช้ ADC2 สำหรับอินพุต (PB4), MUX บิต 0

ADCSRA =

(1 << เอเดน) | // เปิดใช้งาน ADC (1 << ADPS2) | // ตั้งค่าพรีสเกลเลอร์เป็น 64, บิต 2 (1 << ADPS1) | // ตั้งค่าพรีสเกลเลอร์เป็น 64, บิต 1 (0 << ADPS0); // ตั้งค่าพรีสเกลเลอร์เป็น 64, บิต 0 }

int หลัก (เป็นโมฆะ)

{ initADC();

ในขณะที่(1)

{

ADCSRA |= (1 << ADSC); // เริ่มการวัด ADC ในขณะที่ (ADCSRA & (1 << ADSC)); // รอจนการแปลงเสร็จ

ถ้า (ADCH > 170)

{ PORTB |= (1 << PB3); //ปักหมุดไว้ที่สูง PORTB |= (1 << PB2); //ปักหมุดไว้ที่สูง } else if (ADCH 85) { PORTB |= (1 << PB3); //ปักหมุดไว้ที่สูง PORTB &= ~(1 << PB2); //ปักหมุดไว้ที่ LOW

} อื่น {

PORTB |= (1 << PB2); //ปักหมุดไว้ที่สูง PORTB &= ~(1 << PB3); //ปักหมุดไว้ที่ LOW

}

}

กลับ 0;

}

ขั้นตอนที่ 2: วงจร

วงจร
วงจร

หมุด ATTINY

PB3, พินจริง 2 - พิน LED ที่เชื่อมต่อ 1

PB4, พินจริง 3, เชื่อมต่อกับพินกลาง POT

GND พินจริง 4 เชื่อมต่อกับรางลบ - แหล่งจ่ายไฟ

PB2, พินจริง 7 - พิน LED ที่เชื่อมต่อ 3

VCC, พินกายภาพ 8, เชื่อมต่อกับรางบวก - แหล่งจ่ายไฟ

หม้อ

ขา pos และ neg เชื่อมต่อกับรางตามลำดับ - แหล่งจ่ายไฟ

นำ

ขากลางเชื่อมต่อกับรางลบ - แหล่งจ่ายไฟ

ฉันทดลองโดยใช้แหล่งจ่ายไฟ 3 และ 3.3 โวลต์และทั้งคู่ก็ใช้งานได้

ขั้นตอนที่ 3: บทสรุป

บทสรุป
บทสรุป

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

แนะนำ: