« ตอบกลับ #2 เมื่อ: มกราคม 27, 2019, 05:00:59 PM »
ตัวอย่าง โปรแกรมอ่านค่าแอนะล็อกพื้นฐาน
โปรแกรมอ่านค่าสัญญาณแอนะล็อกพื้นฐาน สามารถอ่านได้โดยใช้ฟังก์ชั่น analogRead จากตัวอย่างโปรแกรมเป็นการอ่านจากขา A0 ดังรูป
โค้ด
void setup() {
Serial.begin(9600);
}
void loop() {
int adc=analogRead(A0);
Serial.printf("Value of ADC from A0 :%u \n",adc);
delay(500);
}
ตัวอย่าง โปรแกรมอ่านค่าแอนะล็อกแบบใช้ฟังก์ชั่นลดทอน
การอ่านค่าสัญญาณแอนะล็อกแบบต้องการใช้ฟังก์ชั่นลดทอนสามารถทำได้โดย
-เพิ่มไลบรารี่ #include <driver/adc.h>
-ประกาศฟังก์ชั่นลดทอนสัญญาณก่อนคำสั่งอ่านค่าสัญญาณ
ตัวอย่าง โปรแกรมอ่านค่าสัญญาณแอนาล็อกแบบใช้การลดทอน การใช้งานจะต้องประกาศการลดทอนก่อนการอ่านค่าดังรูป
โค้ด
#include <driver/adc.h>
void setup() {
Serial.begin(9600);
}
void loop() {
adc2_config_channel_atten(ADC2_CHANNEL_0,ADC_ATTEN_6db);
int adc=analogRead(A10);
Serial.printf("Value of ADC from A10 :%u \n",adc);
delay(500);
}
ตัวอย่าง โปรแกรมอ่านค่าสัญญาณแอนาล็อกแบบใช้การลดทอนหลายค่า และอ่านค่าจากช่องสัญญาณช่องเดียวดังรูป
โค้ด
#include <driver/adc.h>
void setup() {
Serial.begin(9600);
}
void loop() {
adc2_config_channel_atten(ADC2_CHANNEL_0,ADC_ATTEN_0db);
int adc1=analogRead(A10);
adc2_config_channel_atten(ADC2_CHANNEL_0,ADC_ATTEN_2_5db);
int adc2=analogRead(A10);
adc2_config_channel_atten(ADC2_CHANNEL_0,ADC_ATTEN_6db);
int adc3=analogRead(A10);
adc2_config_channel_atten(ADC2_CHANNEL_0,ADC_ATTEN_11db);
int adc4=analogRead(A10);
Serial.printf("[0dB:%u][2.5dB:%u][6dB:%u][11dB:%u]\n",adc1,adc2,adc3,adc4);
delay(500);
}
ตัวอย่าง โปรแกรมอ่านค่าแอนะล็อกควบคุม LED(พื้นฐาน)
การอ่านค่าสัญญาณแอนะล็อกแล้วนำค่าที่อ่านได้ควบคุมการติดดับของ LED (เขียนแบบวนอ่านค่าสัญญาณ) จากตัวอย่างโปรแกรมเป็นการอ่านจากขา A0
โค้ด
#define LED1 27
#define LED2 14
#define LED3 12
#define LED4 13
void setup() {
Serial.begin(9600);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
}
void loop() {
int adc = analogRead(A0);
Serial.printf("Value of ADC from A0 :%u \n", adc);
digitalWrite(LED1, adc>3500 ? 1 : 0);
digitalWrite(LED2, adc>2500 ? 1 : 0);
digitalWrite(LED3, adc>1500 ? 1 : 0);
digitalWrite(LED4, adc>500 ? 1 : 0);
delay(500);
}
ตัวอย่าง โปรแกรมอ่านค่าแอนะล็อกควบคุม LED(ใช้ไลบรารี่ simpleTimer)
การอ่านค่าสัญญาณแอนะล็อกแล้วนำค่าที่อ่านได้ควบคุมการติดดับของ LED เป็นโปรแกรมที่ไม่วนอ่านค่าแต่ใช้ไลบรารี่ simpleTimer กำหนดคาบเวลาให้ไปอ่านค่ามาแทน จากตัวอย่างโปรแกรมเป็นการอ่านจากขา A0
โค้ด
#include <SimpleTimer.h>
const byte ledPin[] = {27, 14, 12, 13};
SimpleTimer timer;
int adc;
void readADC() {
adc = analogRead(A0);
Serial.printf("Value of ADC from A0 :%u \n", adc);
}
void setup() {
Serial.begin(9600);
for (byte i = 0; i < (sizeof(ledPin) / sizeof(byte)); i++)
pinMode(ledPin[i], OUTPUT);
timer.setInterval(1000, readADC);
}
void loop() {
timer.run();
digitalWrite(ledPin[0], adc > 3500 ? 1 : 0);
digitalWrite(ledPin[1], adc > 2500 ? 1 : 0);
digitalWrite(ledPin[2], adc > 1500 ? 1 : 0);
digitalWrite(ledPin[3], adc > 500 ? 1 : 0);
delay(50);
}
« แก้ไขครั้งสุดท้าย: มกราคม 27, 2019, 06:19:42 PM โดย admin »
บันทึกการเข้า