71
IOT : Internet of Thing (ESP32) / Re: การเรียนรู้ครั้งที่ 7 [Basic ESP32] การใช้งาน DAC
« กระทู้ล่าสุด โดย admin เมื่อ กุมภาพันธ์ 06, 2019, 10:02:03 AM »...
#define DAC1 25
int sine[360];
void setup() {
for (int deg = 0 ; deg < 360 ; deg++ ) {
sine[deg] = int(128 + 127 * sin(deg * PI / 180));
}
}
void loop() {
for (int deg = 0 ; deg < 360 ; deg ++ ) {
dacWrite(DAC1, sine[deg]);
}
}
#define DAC1 25
int sine[360];
void setup() {
for (int deg = 0 ; deg < 360 ; deg++ ) {
sine[deg] = int(128 + 127 * sin(deg * PI / 180));
}
}
void loop() {
for (int deg = 0 ; deg < 360 ; deg +=5 ) {
dacWrite(DAC1, sine[deg]);
}
}
#define DAC1 25
int sine[360];
void setup() {
for (int deg = 0 ; deg < 360 ; deg++ ) {
sine[deg] = int(128 + 127 * sin(deg * PI / 180));
}
}
void loop() {
for (int deg = 0 ; deg < 360 ; deg +=10 ) {
dacWrite(DAC1, sine[deg]);
}
}
#define DAC1 25
#define DAC2 26
int sine[360];
int sawtooth[360];
void setup() {
for (int deg = 0 ; deg < 360 ; deg++ ) {
//----------------------------Sine wave----------------
sine[deg] = int(128 + 127 * sin(deg * PI / 180));
//------------------Sawtooth---------------------------
sawtooth[deg] = map(deg, 0, 360, 0, 255);
}
}
void loop() {
for (int deg = 0 ; deg < 360 ; deg ++ ) {
dacWrite(DAC1, sine[deg]);
dacWrite(DAC2, sawtooth[deg]);
}
}
รูปแบบ | คำอธิบาย |
---|---|
dacWrite(pin, value); | ฟังก์ชั่นส่งค่าแอนะล็อกที่เป็นแรงดันระหว่าง 0-3.3V pin: หมายเลขขาที่ต้องการส่งค่าแอนะล็อกออก(25,26) value: ค่าที่ต้องการส่งออก (0-255) |
sin(value); | ฟังก์ชั่นตรีโกณมิติที่คืนค่า sine จากมุมที่กำหนด value:ค่ามุมเป็นเรเดียน |
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>
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);
}
#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);
}
#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);
}
รูปแบบ | คำอธิบาย |
---|---|
pinMode(pin, mode); | pin: หมายเลขขาที่ต้องการเซตโหมด mode: INPUT, OUTPUT, INPUT_PULLUP |
digitalWrite(pin,value); | pin: หมายเลข ขาที่ต้องการเขียนลอจิกออกพอร์ต value: ค่าลอจิกที่ต้องการส่งออก HIGH or LOW |
analogRead(pin); | pin: หมายเลขขาที่ต้องการอ่านสัญญาณแอนนะล็อกเช่น A0, A2, A10,... |
delay(ms); | ms: ตัวเลขที่หยุดค้างของเวลาหน่วยมิลลิวินาที (unsigned long) |
รูปแบบ | คำอธิบาย |
---|---|
SimpleTimer object; | ประกาศเริ่มใช้งานไลบรารี่ SimpleTimer ตัวอย่าง ต้องการประกาศใช้งานในออปเจคชื่อว่า timer SimpleTimer timer; |
.setInterval(interval_time, func); | ฟังก์ชั่นตั้งค่า (วางไว้ใน void setup()) ตั้งค่าคาบเวลาและฟังก์ชั่นที่ต้องการให้ไปทำงานเมื่อครบเวลา interval_time= ค่าคาบเวลาหน่วยเป็นมิลลิวินาที func=ชื่อฟังก์ชั่นที่ต้องการให้ไปทำงานเมื่อครบคาบเวลา |
.run(); | ฟังก์ชั่นให้ไลบรารี่ทำงาน (วางไว้ใน void loop()) ตัวอย่าง ตั้งชื่อออปเจคว่า timer การใช้งานจะประกาศว่า timer.run(); |
adc1_config_channel_atten(ADC1_CHANNEL_0,ADC_ATTEN_0db);
adc1_config_channel_atten(ADC1_CHANNEL_0,ADC_ATTEN_2_5db);
adc1_config_channel_atten(ADC1_CHANNEL_0,ADC_ATTEN_6db);
adc1_config_channel_atten(ADC1_CHANNEL_0,ADC_ATTEN_11db);