![]() |
Schematic |
![]() |
Breadboard |
int pwm = 12; // pin 12 untuk nilai variabel PWM
int t1 = 0; // deklarasi awal t1 dengan nilai 0
int t2 = 0; // deklarasi awal t2 dengan nilai 0
int persen = 0; // persentase t2
char rx_byte = 0;
String rx_str = "";
boolean not_number = false;
void setup() {
Serial.begin(9600);
Serial.println("Masukan Nilai PWM Duty Cycle");
pinMode(pwm, OUTPUT); // deklarasi pin 12 sbg output
t2=1000; //set awal
}
void loop() {
ambil_nilai();
t1 = 1000-t2;
digitalWrite(pwm, HIGH); // pin 12 pulsa tinggi
delayMicroseconds(t1); // durasi pulsa tinggi
digitalWrite(pwm, LOW); // pin 12 pulsa rendah
delayMicroseconds(t2); // durasi pulsa rendah
}
void ambil_nilai(){
if (Serial.available() > 0) { // cek adanya karakter
rx_byte = Serial.read(); // mengambil karakter
if ((rx_byte >= '0') && (rx_byte <= '9')) {
rx_str += rx_byte;
}
else if (rx_byte == '\n') {
// menutup pengambilan karakter
if (not_number) {
Serial.println("bukan angka");
}
else {
// operasi
persen = 100 - rx_str.toInt();
t2 = persen * 10;
// print the result
Serial.print(rx_str);
Serial.println("%");
Serial.println("");
Serial.println("Masukan Nilai PWM Duty Cycle");
}
not_number = false; // reset flag
rx_str = ""; // clear
}
else {
// memperoleh huruf
not_number = true; // flag a non-number
}
} // end: if (Serial.available() > 0)
}
https://startingelectronics.org/software/arduino/learn-to-program-course/19-serial-input/
http://www.circuitstoday.com/pwm-generation-and-control-using-arduino
Tidak ada komentar:
Posting Komentar