прошу помощи в скейтче
- Войдите на сайт для отправки комментариев
Пт, 06/03/2020 - 15:51
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
const int RELAY_PIN = 12; // Пин управления реле
const int LED_PIN = 11; // Пин сигнального диода
const int LED_PIN2 = 10; // Пин сигнального диода
const int LED_COUNT_WRONG = 2; // Кол-во изменения состояния диода при неверном valet. Загорелся и потух это 2
const int LED_COUNTER_TIME = 7000; // Сколько времени следить за диодом после ввода пина в мс
const int DIGIT_DELAY = 1500; // Пауза между вводом чисел в мс
int v = 0;
int v1 = 1;
int v2 = 1;
int v3 = 1;
int v4 = 1;
int led_sw = 0;
char buf[20];
bool stp = true;
void setup() {
lcd.begin(16, 2);
pinMode(RELAY_PIN, OUTPUT);
pinMode(LED_PIN, INPUT);
pinMode(LED_PIN2, INPUT);
Serial.begin(9600);
}
void parseV() {
v1 = (int)(v / 1000);
v2 = (int)(v % 1000 / 100);
v3 = (int)(v % 100 / 10);
v4 = (int)(v % 10);
if (v1 == 0) v1 = 10;
if (v2 == 0) v2 = 10;
if (v3 == 0) v3 = 10;
if (v4 == 0) v4 = 10;
}
void writePinDigit(int num, bool is_delay) {
int n;
for (n = 0; n < num; n++) {
digitalWrite(RELAY_PIN, HIGH);
delay(75);
digitalWrite(RELAY_PIN, LOW);
delay(75);
lcd.setCursor(0, 1);
}
if (is_delay) delay(DIGIT_DELAY);
}
void ledCounter() {
int max = LED_COUNTER_TIME / 10;
int prev = LOW;
int sw = 0;
int n = 0;
int st;
for (n = 0; n < max; n++) {
if(digitalRead(14)==HIGH)//если кнопка нажата ...
{
st = digitalRead(LED_PIN);
}
else//
{
st = digitalRead(LED_PIN2);
}
if (st != prev) {
sw++;
prev = st;
}
delay(10);
}
if (sw != 0 && sw != 2 && sw != 3 && sw != 4 && sw != 5 && sw != 6 && sw != 7 && sw != 8) {
sprintf(buf, "stop!!!");
Serial.println(buf);
lcd.print(buf);
stp = true;
}
led_sw = sw;
}
void iteration() {
writePinDigit(v1, true);
writePinDigit(v2, true);
writePinDigit(v3, true);
writePinDigit(v4, false);
ledCounter();
sprintf(buf, "code:%d,led:%d", v, led_sw);
Serial.println(buf);
lcd.print(buf);
if (!stp) {
v++;
parseV();
}
}
void loop() {
if (Serial.available() > 0) {//если есть доступные данные
String rec = Serial.readString();//читает строку порта
v = rec.toInt();
parseV();
stp = false;
sprintf(buf, "start code %d", v);
Serial.println(buf);
lcd.print(buf);
}
if (v > 0 && v < 10000 && !stp) {
iteration();
}
}
подскажите пожалуйста как сделать так что бы при подключении питания сразу начинался счет с 0001
а не с монитора порта.
в строке 10 вместо v=0; поставьте v=1;
не работает
2 дня голову ломаю
не работает
еще в строке 17 поменять true на false
спасибо огромное 2 раз мне помогаешь!!!
если не трудно можешь еще подсказать когда с монитора порта вводишь к примеру 1111 он пишет start code:1111 а сейчас просто коде как сделать что бы отображал сейчас?
code:
если не трудно можешь еще подсказать
за 500р - может. :)
могу тебя как то отбагодорить?
могу тебя как то отбагодорить?
Купи мароженку. Или пива.
если не трудно можешь еще подсказать когда с монитора порта вводишь к примеру 1111 он пишет start code:1111 а сейчас просто коде как сделать что бы отображал сейчас?
фигурную скобку со строки 122 перенеси между 115 и 116 строкой
если не трудно можешь еще подсказать когда с монитора порта вводишь к примеру 1111 он пишет start code:1111 а сейчас просто коде как сделать что бы отображал сейчас?
фигурную скобку со строки 122 перенеси между 115 и 116 строкой
оооууууу все работает огоньь!!!