Page

Senin, 12 Juni 2017

Control PWM Duty Cycle

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