Почему не работает for?

qwerty13rus
Offline
Зарегистрирован: 05.12.2018
/*
   Пример вывода на дисплей с регистром TM1637
   AlexGyver Technologies http://alexgyver.ru/
*/

//--- ПИНЫ ---               
int inPin = A0;  // тут кнопка                
int val = 0;

#define CLK 5
#define DIO 4
//--- ПИНЫ ---

//--- ОБЪЯВЛЕНИЕ ---
#include "TM1637.h"
TM1637 disp(CLK, DIO);
//--- ОБЪЯВЛЕНИЕ ---

void setup() {
   pinMode (inPin, INPUT);
  pinMode (3, OUTPUT);
  pinMode (6, OUTPUT);
  digitalWrite(3, 1);
  digitalWrite(6, 0);
  Serial.begin(9600); // выставляем скорость COM порта

  disp.init();  // инициализация
  disp.set(7);  // яркость, 0 - 7 (минимум - максимум)
}
void loop() {
  val = digitalRead(inPin);
 for (val = 0; val == 1023; val++) {  // счётчик 0-1100 без нулей
    disp.displayInt(val);
    delay(20);
    Serial.println(digitalRead(val));
     disp.clearDisplay();
    }

}

Задача такая, нужно что при подачи high на A0 , на дисплее к числу прибавлялся 1

sadman41
Offline
Зарегистрирован: 19.10.2016

Да что сегодня за день-то такой... У одного if() не работает, у другого for(). Где вы палёный Cи брали?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Внятно, по-русски, словами скажите. Что делает строка №32. Подробно, по пунктам, загибая пальцы.

Скажете - будет приз, поймёте почему не работает.

sadman41
Offline
Зарегистрирован: 19.10.2016

Тут даже если for() поправить - не поможет, disp сломается...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sadman41 пишет:

Тут даже если for() поправить - не поможет

Ну это же не значит, что его не надо поправлять? решаем проблемы по мере поступления :)

b707
Offline
Зарегистрирован: 26.05.2017

sadman41 пишет:

Тут даже если for() поправить - не поможет, disp сломается...

переменной val тут вообще не позавидуешь :) Сначала строка 32. потом этот for. потом строка 35... я бы с горя повесился :)

sadman41
Offline
Зарегистрирован: 19.10.2016

ЕвгенийП пишет:

Ну это же не значит, что его не надо поправлять?

Вопрос достаточно философский... Стоит ли чинить замок в раздолбанной двери?

qwerty13rus
Offline
Зарегистрирован: 05.12.2018

ЕвгенийП пишет:

Внятно, по-русски, словами скажите. Что делает строка №32. Подробно, по пунктам, загибая пальцы.

Скажете - будет приз, поймёте почему не работает.

задал начальное значение счетчика; создал условие, при котором будет изменятся значение; Я так понимаю должно быть так, если переменная val равна 1023, то к этой переменной прибавляется единица. А на следующей строчке выводится это значение

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ой, блин, я что-то сразу не заметил, извините.

/*
Пример вывода на дисплей с регистром TM1637
AlexGyver Technologies ...
*/

qwerty13rus, Вы обратились не на тот форум. Вам могут помочь только на https://community.alexgyver.ru/ Идите туда и там спрашивайте. 

b707
Offline
Зарегистрирован: 26.05.2017

qwerty13rus пишет:

задал начальное значение счетчика; создал условие, при котором будет изменятся значение; Я так понимаю должно быть так, если переменная val равна 1023, то к этой переменной прибавляется единица. А на следующей строчке выводится это значение

а не приходит в голову, что если вы задали начальное значение val =0. то val одновременно с этим никак не может быть 1023?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

http://cppstudio.com/post/348/  

Для тех кто в танке
Выражение 2 — это условие продолжения цикла for, оно проверяется на истинность.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

qwerty13rus пишет:

задал начальное значение счетчика; создал условие, при котором будет изменятся значение; Я так понимаю должно быть так, если переменная val равна 1023, то к этой переменной прибавляется единица. А на следующей строчке выводится это значение

Сказанное является бессвязным бредом. Попробуйте найти описание цикла for и повторите попытку, прочитав и и разобравшись как он работает.

Ну, или идите туда, куда я сказал в прошлом посте.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

А мне интересно - что курил создатель программы?

Я так и представляю его, всклокоченного с горящими глазами, и произносящего: -А тут мы захерачим цикл for!

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

Приблизительно так:


/*
   Пример вывода на дисплей с регистром TM1637
   AlexGyver Technologies <a href="http://alexgyver.ru/" title="http://alexgyver.ru/" rel="nofollow">http://alexgyver.ru/</a>
*/

//--- ПИНЫ ---               
int inPin = A0;  // тут кнопка                
int val = 0;
bool oneClick = false;

#define CLK 5
#define DIO 4
//--- ПИНЫ ---

//--- ОБЪЯВЛЕНИЕ ---
#include "TM1637.h"
TM1637 disp(CLK, DIO);
//--- ОБЪЯВЛЕНИЕ ---

void setup() {
   pinMode (inPin, INPUT);
  pinMode (3, OUTPUT);
  pinMode (6, OUTPUT);
  digitalWrite(3, 1);
  digitalWrite(6, 0);
  Serial.begin(9600); // выставляем скорость COM порта

  disp.init();  // инициализация
  disp.set(7);  // яркость, 0 - 7 (минимум - максимум)
}
void loop() {  
    if(digitalRead(inPin)&&!oneClick)
    {
      val++;
        if (val>1023){val=0;}
        delay(20);        
         oneClick=true;
    }
    else if(!digitalRead(inPin)&&oneClick){oneClick=false;}
  disp.clearDisplay();  
  disp.displayInt(val);        
        Serial.print(val);
Serial.print('\r');
}
 
Schwarz78
Offline
Зарегистрирован: 19.01.2019

Вам тут долго будут объяснять что ваш for не работает, но он работает.

qwerty13rus
Offline
Зарегистрирован: 05.12.2018

anatoli_nik пишет:

Вам тут долго будут объяснять что ваш for не работает, но он работает.

спасибо