Всем добрый вечер. Я сделал сортировщик монет, а для их фиксации использовал датчики препятствий. На lcd экран должно выводить:
1. Сумма;
2. Всего монет;
3. Номинал монеты и его количество.
Еще есть кнопка для сброса данных. Проблема в том, что монеты фиксируются датчиками в лучшем случае 1 из 3. Скетч писал сам и в первый раз.
Но если загрузить этот скетч (без вывода на lcd экран, подсчета суммы и количества монет), и наблюдать через монитор порта, то все монеты фиксируются идеально.
Буду очень признателен помощи в решении этой проблемы.
1. Сумма;
2. Всего монет;
3. Номинал монеты и его количество.
Еще есть кнопка для сброса данных. Проблема в том, что монеты фиксируются датчиками в лучшем случае 1 из 3. Скетч писал сам и в первый раз.
C++:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
#include <LCD_1602_RUS.h>
LCD_1602_RUS lcd(0x27, 20, 4);
float deneg = 0;
int monet = 0;
int programma = 0;
int flag1 = 0;
int flag2 = 0;
int flag3 = 0;
int flag4 = 0;
int flag5 = 0;
int flag6 = 0;
void setup() {
Serial.begin(9600);
delay(80);
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
pinMode(10, INPUT);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(10, HIGH);
String str1;
str1 = "Кто-то";
lcd.init();
lcd.backlight();
lcd.setCursor(6, 1);
lcd.print("Привет");
lcd.setCursor(10, 2);
lcd.print(str1);
delay(3000);
lcd.clear();
}
void loop() {
if (digitalRead(2) == 0) {
Serial.println("It was a 10k");
deneg = deneg + 0.10;
monet = monet + 1;
flag1 = flag1 + 1;
delay(80);
}
if (digitalRead(3) == 0) {
Serial.println("It was a 1s");
deneg = deneg + 1;
monet = monet + 1;
flag2 = flag2 + 1;
delay(80);
}
if (digitalRead(4) == 0) {
Serial.println("It was a 2grn");
deneg = deneg + 2;
monet = monet + 1;
flag3 = flag3 + 1;
delay(80);
}
if (digitalRead(5) == 0) {
Serial.println("It was a 5grn");
deneg = deneg + 5;
monet = monet + 1;
flag4 = flag4 + 1;
delay(80);
}
if (digitalRead(6) == 0) {
Serial.println("It was a 50k");
deneg = deneg + 0.50;
monet = monet + 1;
flag5 = flag5 + 1;
delay(80);
}
if (digitalRead(7) == 0) {
Serial.println("It was a 10grn");
deneg = deneg + 10;
monet = monet + 1;
flag6 = flag6 + 1;
delay(80);
}
if (digitalRead(8) == 0) {
Serial.println("It was a 1g");
deneg = deneg + 1;
monet = monet + 1;
flag2 = flag2 + 1;
delay(80);
}
String str2;
str2 = "Всего монет:";
lcd.setCursor(0, 0);
lcd.print("Сумма= ");
lcd.setCursor(8, 0);
lcd.print(deneg);
lcd.setCursor(0, 1);
lcd.print(str2);
lcd.setCursor(14, 1);
lcd.print(monet);
lcd.setCursor(0,2);
lcd.print("0.1 0.5 1 2 5 10");
lcd.setCursor(1, 3);
lcd.print(flag1);
lcd.setCursor(9, 3);
lcd.print(flag2);
lcd.setCursor(12, 3);
lcd.print(flag3);
lcd.setCursor(15, 3);
lcd.print(flag4);
lcd.setCursor(5, 3);
lcd.print(flag5);
lcd.setCursor(18, 3);
lcd.print(flag6);
if (digitalRead(10) == 0) {
Serial.println("Sbros");
programma = 1;
deneg = 0;
monet = 0;
flag1 = 0;
flag2 = 0;
flag3 = 0;
flag4 = 0;
flag5 = 0;
flag6 = 0;
String str3;
str3 = "Сброс данных";
lcd.clear();
lcd.setCursor(4, 1);
lcd.print(str3);
delay(1000);
lcd.clear();
programma = 0;
}
if (programma == 0) {
String str2;
str2 = "Всего монет:";
lcd.setCursor(0, 0);
lcd.print("Сумма= ");
lcd.setCursor(8, 0);
lcd.print(deneg);
lcd.setCursor(0, 1);
lcd.print(str2);
lcd.setCursor(14, 1);
lcd.print(monet);
lcd.setCursor(0,2);
lcd.print("0.1 0.5 1 2 5 10");
lcd.setCursor(1, 3);
lcd.print(flag1);
lcd.setCursor(9, 3);
lcd.print(flag2);
lcd.setCursor(12, 3);
lcd.print(flag3);
lcd.setCursor(15, 3);
lcd.print(flag4);
lcd.setCursor(5, 3);
lcd.print(flag5);
lcd.setCursor(18, 3);
lcd.print(flag6);
}
}
C++:
void setup() {
Serial.begin(9600);
delay(80);
}
void loop() {
if (digitalRead(2) == 0) {
Serial.println("It was a 10k");
delay(80);
}
if (digitalRead(3) == 0) {
Serial.println("It was a 1s");
delay(80);
}
if (digitalRead(4) == 0) {
Serial.println("It was a 2grn");
delay(80);
}
if (digitalRead(5) == 0) {
Serial.println("It was a 5grn");
delay(80);
}
if (digitalRead(6) == 0) {
Serial.println("It was a 50k");
delay(80);
}
if (digitalRead(7) == 0) {
Serial.println("It was a 10grn");
delay(80);
}
if (digitalRead(8) == 0) {
Serial.println("It was a 1g");
delay(80);
}