0
καλησπέρα και απο εμένα..
με αφορμή αυτό το βίντεο προσπαθώ να φτιάξω ένα απλό κύκλωμα με 2 κουμπια και μία οθόνη που να setαρει με το upbutton ανα 51 rpm μέχρι το 255 και να φένεται η ταχύτητα του ανεμιστήρα.
Dashboard | Tinkercad
setarisma pc fan.jpg
μπωρείτε να ρίξετε καμιά διόρθωση ?Κώδικας:#include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 8); //gia count const byte upButtonPin = 7; const byte downButtonPin = 6; int buttonPushCounter = 0; byte upButtonState = HIGH; byte downButtonState = HIGH; byte prevUpButtonState = HIGH; byte prevDownButtonState = HIGH; //gia pwm const int fan_control_pin = 9; // blue wire int count = 0; unsigned long start_time; int rpm; int pwm = 0; void setup() { //lcd.init(); // initialize the lcd Serial.begin(9600); pinMode(upButtonPin, INPUT_PULLUP); pinMode(downButtonPin, INPUT_PULLUP); pinMode(fan_control_pin, OUTPUT); analogWrite(fan_control_pin, 0); attachInterrupt(digitalPinToInterrupt(2), counter, RISING); } void loop() { upButtonState = digitalRead(upButtonPin); if ((upButtonState != prevUpButtonState) && (pwm <255)) { if (upButtonState == LOW) { pwm+=51; Serial.println(pwm); } delay(50); analogWrite(fan_control_pin, pwm); delay(100); start_time = millis(); count = 0; while((millis() - start_time) < 1000){ } rpm = count * 30 / 2; Serial.print("PWM = "); Serial.print(map(pwm, 0, 255, 0, 100)); Serial.print("%, speed ="); Serial.print(rpm); Serial.println(" rpm"); lcd.begin(16,2); // Print a message to the LCD. lcd.clear(); lcd.setCursor(0,0); lcd.print("pwm= "); lcd.print(map(pwm, 0, 255, 0, 100)); lcd.print("%"); lcd.setCursor(0,1); lcd.print("Speed = "); lcd.print(rpm); } prevUpButtonState = upButtonState; downButtonState = digitalRead(downButtonPin); if (downButtonState != prevDownButtonState && (pwm<=255) && (pwm>0)) { if (downButtonState == LOW) { pwm-=51; Serial.println(pwm); } prevDownButtonState = downButtonState; delay(50); analogWrite(fan_control_pin, pwm); delay(100); start_time = millis(); count = 0; while((millis() - start_time) < 1000){ } rpm = count * 30 / 2; Serial.print("PWM = "); Serial.print(map(pwm, 0, 255, 0, 100)); Serial.print("%, speed="); Serial.print(rpm); Serial.println(" rpm"); ; lcd.begin(16,2); // Print a message to the LCD. lcd.clear(); lcd.setCursor(0,0); lcd.print("pwm= "); lcd.print(map(pwm, 0, 255, 0, 100)); lcd.print("%"); lcd.setCursor(0,1); lcd.print("Speed = "); lcd.print(rpm); } } void counter() { count++; }