Проблема с управлением печки в авто через arduino

LiveFuture
Offline
Зарегистрирован: 19.08.2015

Доброе время суток!

Я решил поставить климотконтроль на arduino в своей машине, но пока что решил потренироваться заменив мотор светодиодом. управление двумя кнопками + и - дисплей для показания шкалы увеличения мощности и диод для видимости. и тут проблема как при увеличении мощности показать на дисплее повышение уровня шкалы и уменьшение?

прошу помогите возможно для вас это пустяк.

код__________________________________________

#include <LiquidCrystal.h>
 
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
int ledPin = 9;
int inputPin1 = 3; // кнопка 1
int inputPin2 = 2; // кнопка 2
int value = 0; 
 
byte p20[8] = {
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
};
 
void setup() {
  lcd.begin(16, 2);
  lcd.print("\x2d              \x2b"); 
  lcd.setCursor(0, 1);
  lcd.print("\x2d              \x2b");
 pinMode(ledPin, OUTPUT);
// инициализируем контакт, подключенный к светодиоду, как выход
  pinMode(inputPin1, INPUT); // кнопка 1 - вход
  pinMode(inputPin2, INPUT); // кнопка 2 - вход 
  
  lcd.createChar(0, p20);
}
void loop(){
  lcd.setCursor (0,1);
  lcd.print("\x2d              \x2b");
  if (digitalRead(inputPin1) == LOW) { value--; }
  else if (digitalRead(inputPin2) == LOW) { value++; }
  value = constrain(value, 0, 255);
  analogWrite(ledPin, value);
  delay(10);
 
}
 
vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

Насколько я  помню:

В void setup() нужно зарегистрировавть свои символы

/* Регистрируем собственные символы с кодами 1, 2..8 */

  lcd.createChar(1, p20);
 
Потом в (loop) в зависимости от value заполнить своими символами, не забывая сначала про очистку
Напимер value ==3
 
lcd.clear();
lcd.setCursor(0, 1);
  lcd.write(1); // Заполняем 1й блок
  lcd.write(1);// Заполняем 2й блок
  lcd.write(1);// Заполняем 3й блок
или через цыкл.
 

 

LiveFuture
Offline
Зарегистрирован: 19.08.2015

Ооооо! Сейчас попробую. спасибо! позже отпишу!

LiveFuture
Offline
Зарегистрирован: 19.08.2015

Спасибо! Но данный пример я уже смотрел...... 

Я решил эту проблему по другому.

#include <LiquidCrystal.h>

 
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
int ledPin = 9;
int inputPin1 = 3; // кнопка 1
int inputPin2 = 2; // кнопка 2
int value = 0; 
 
byte p20[8] = {
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
};
 
void setup() {
  lcd.begin(16, 2);
  lcd.print("\x2d              \x2b"); 
 
 pinMode(ledPin, OUTPUT);
// инициализируем контакт, подключенный к светодиоду, как выход
  pinMode(inputPin1, INPUT); // кнопка 1 - вход
  pinMode(inputPin2, INPUT); // кнопка 2 - вход 
  
  lcd.createChar(1, p20);
}
void loop(){
  
  if (digitalRead(inputPin1) == LOW) { value--; }
  else if (digitalRead(inputPin2) == LOW) { value++; }
  value = constrain(value, 0, 255);
  analogWrite(ledPin, value);
  delay(10);
  lcd.setCursor (0,1);
  lcd.print("\x2d");
  
  for (int r = 1; r <= 14; r++) {
    
    if(value > (5 * r) - 1) lcd.write(byte(0));
    else lcd.print(" ");
  }
  lcd.print ("\x2b");
 
}