//Pico_MultiTasking_Template
uint32_t currentTime;
uint32_t previousTime_1;
uint32_t previousTime_2;
uint32_t previousTime_3;
uint32_t previousTime_4;
uint32_t task1Time = 10;
uint32_t task2Time = 10;
uint32_t task3Time = 10;
uint32_t task4Time = 100;
//END MultiTasking set variables
//******set GP here********//
//uint32_t PWM_GP2 = 2; // test1.1 LED0 led ติด 100% หรี่ ลงเรื่อยๆ
int LED0 = 2 ;
int LED1 = 3 ; //GP3
int LED2 = 4 ; //GP4
int SW0 = 5 ; //GP5
bool flag_SW0;
bool flag_upDown; //0 = up, 1 = down
// VR GP26
//*******set PWM here*********//
uint32_t freq = 500; //freq 100...1MHz
int resolution_PWM = 12; //2^12=4095: 0...1023
int resolution_ADC = 12; //2^12=4096: 0...1023
int ADCres = 12; // map
int vQ; //for Analog Read
//int vA;
int32_t dutyCycle0 = 0 ;
int dutyCycle1 = 4095;
int dutyCycle2;
float nA0;
void setup() {
Serial.begin(115200); // ให้ลบเลข 1 ทำจริง
analogReadResolution(resolution_ADC);
analogReadResolution(ADCres);
analogWriteFreq(freq);
analogWriteResolution(resolution_PWM);
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(SW0,INPUT_PULLUP);
}
void loop() {
currentTime = millis();
//Task1 here
if (currentTime - previousTime_1 >= task1Time) {
previousTime_1 = currentTime;
flag_SW0 = digitalRead(SW0);
vQ = analogRead(A0);
//dutyCycle1 = map(vQ,0,4095,0,1023);
nA0 = (dutyCycle1-vQ); //Maximum 3.3 V *
if(!flag_upDown) {
analogWrite(LED0, dutyCycle0);
dutyCycle0+=10; //Fading
if (dutyCycle0 >= 1023) {
dutyCycle0 = 1023; //initial dutyCycle0
flag_upDown = 1; //next state to count up
}
}
//Task2 here
if (currentTime - previousTime_2 >= task2Time) {
previousTime_2 = currentTime;
if(flag_upDown) {
analogWrite(LED0, dutyCycle0);
dutyCycle0-=50; //Fading
if (dutyCycle0 <= 0) {
dutyCycle0 = 0; //initial dutyCycle0
flag_upDown = 0; //next state to count down
}
}
}
//Task3 here
if (currentTime - previousTime_3 >= task3Time) {
previousTime_3 = currentTime;
if(!flag_SW0){
//vQ = analogRead(A0);
//dutyCycle0 = vQ;
analogWrite(LED1, vQ);
analogWrite(LED2, nA0);
}
}
//Task4 here
if (currentTime - previousTime_4 >= task4Time) {
previousTime_4 = currentTime;
//analogWrite(PWM_GP2, dutyCycle0);//100% = 65,535, 32,768(50%), 16,384(25%), 8,192(12.5%)
//dutyCycle0 -= 500; //Fading //
//if (dutyCycle0 <= 0) {
//dutyCycle0 = 4095; //initial dutyCycle0
//}
if(!flag_SW0){
//Serial.println("up-date vQ");
//Serial.print("vQ = ");
//Serial.println(dutyCycle0);
Serial.println("up-date vQ");
Serial.print("nA0 = ");
Serial.println(nA0);
}
}
Serial.print("vQ = ");
Serial.println(dutyCycle0);
}
}
Loading
pi-pico-w
pi-pico-w