Счётчик нажатий на два сегмента

михан
Offline
Зарегистрирован: 27.09.2020

помогите написать скетч под две 595

вот скетч на один

#define DATA_PIN    13 // пин данных (англ. data)
#define LATCH_PIN   12 // пин строба (англ. latch)
#define CLOCK_PIN   11 // пин такта (англ. clock)
#define BUTTON_PIN  10
 
int clicks = 0;
boolean buttonWasUp = true;
byte segments[10] = {
  0b01111101, 0b00100100, 0b01111010, 0b01110110, 0b00100111, 
  0b01010111, 0b01011111, 0b01100100, 0b01111111, 0b01110111
};
 
void setup()
{
  pinMode(DATA_PIN, OUTPUT);
  pinMode(CLOCK_PIN, OUTPUT);
  pinMode(LATCH_PIN, OUTPUT);
  pinMode(BUTTON_PIN, INPUT_PULLUP);
}
 
void loop()
{
  // считаем клики кнопки, как уже делали это раньше
  if (buttonWasUp && !digitalRead(BUTTON_PIN)) {
    delay(10);
    if (!digitalRead(BUTTON_PIN))
      clicks = (clicks + 1) % 10;
  }
  buttonWasUp = digitalRead(BUTTON_PIN);
  // для записи в 74HC595 нужно притянуть пин строба к земле
  digitalWrite(LATCH_PIN, LOW);
  // задвигаем (англ. shift out) байт-маску бит за битом,
  // начиная с младшего (англ. Least Significant Bit first)
  shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, segments[clicks]);
  // чтобы переданный байт отразился на выходах Qx, нужно
  // подать на пин строба высокий сигнал
  digitalWrite(LATCH_PIN, HIGH);
}
Гриша
Offline
Зарегистрирован: 27.04.2014

а схема где? И сколько Вам лет?

михан
Offline
Зарегистрирован: 27.09.2020

здрасте нужно чтобы два 595 переключали 16 светодиодов при нажатии на кнопку. то есть нажал горит 1 светодиод нажал второй и так далее до 16

int clicks = 0;
boolean buttonWasUp = true;
byte segments[10] = {
  0b01111111, 0b10111111, 0b11011111, 0b11101111, 0b11110111

Я писал по порядку а как сделать на 16 0b11110111 так загорается пятый ну и так далее.

михан
Offline
Зарегистрирован: 27.09.2020

а зачем возраст

михан
Offline
Зарегистрирован: 27.09.2020

?????

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

А зачем в коде массив segments?

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

михан пишет:

а зачем возраст


чтобы знать, как тебя на юх послать - на Вы или на ты

Гриша
Offline
Зарегистрирован: 27.04.2014

михан пишет:

а зачем возраст

1) и как с Вами общаться? как с ребенком?

2) вы не прочитали правила форума

3) вы просите помощи. Чтобы помочь нужно понимать, что собственно вам нужно, а для этого нужна схема...  не исключая и не заменяя описания принципов работы.

http://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/pesochnitsa-dlya-vsekh-novichkov

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Да он (она) спросил, ответа сразу не получил и пошёл дальше. Тему можно сносить, думаю. 

михан
Offline
Зарегистрирован: 27.09.2020

 добрый вечер вот схема

Гриша
Offline
Зарегистрирован: 27.04.2014

отлично, в этом топике есть вставка программного кода, вставьте как там написано с нумерацией строк. Вам проще будет понять, а мне проще ткнуть в ошибку.

михан
Offline
Зарегистрирован: 27.09.2020

Приветствую господа!!! ткните что не так делаю

#define DATA_PIN    13 
#define LATCH_PIN   12 
#define CLOCK_PIN   11 
#define BUTTON_PIN  10
 
int clicks = 0;
boolean buttonWasUp = true;
byte led[8] = {
  0b01111111, 0b10111111, 0b11011111, 0b11101111, 0b11111011, 
  0b11111011, 0b11111101, 0b11111110, 
};
byte led0[8] = {
 
};
  
void setup()
{
  pinMode(DATA_PIN, OUTPUT);
  pinMode(CLOCK_PIN, OUTPUT);
  pinMode(LATCH_PIN, OUTPUT);
  pinMode(BUTTON_PIN, INPUT_PULLUP);
}
 
void loop()
{
   if (buttonWasUp && !digitalRead(BUTTON_PIN)) {
    delay(10);
    if (!digitalRead(BUTTON_PIN))
      clicks = (clicks + 1) % 16;
  }
  buttonWasUp = digitalRead(BUTTON_PIN);
  digitalWrite(LATCH_PIN, LOW);
  shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, led[clicks]);
  shiftOut(DATA_PIN, CLOCK_PIN, LSBFIRST, led0[clicks]);
  digitalWrite(LATCH_PIN, HIGH);
}
sadman41
Offline
Зарегистрирован: 19.10.2016

Исходник неправильно в пост вставляешь.

Гриша
Offline
Зарегистрирован: 27.04.2014

+ не читаешь или игнорируешь, что тебе пишут - хотя бы и пост 10

михан
Offline
Зарегистрирован: 27.09.2020

Ребят я не понимаю о чем речь идет,.?

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Речь о том, что ты не читаешь и/или не понимаешьчто от тебя хотят. 
прочти внимательно: http://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/pesochnitsa-dlya-vsekh-novichkov

михан
Offline
Зарегистрирован: 27.09.2020

ну вот и все ну вот и все я ухожу из твоей жизни!!!!

 
#include <SPI.h>
bool _gtv1;
bool _gen1I = 0;
bool _gen1O = 0;
unsigned long _gen1P = 0UL;
byte _74HC5952OB1 = 0;
byte _74HC5952OB2 = 0;
byte _74HC5952TB = 0;
bool _74HC5952NS = 0;
byte _74HC5951OB1 = 0;
byte _74HC5951OB2 = 0;
byte _74HC5951TB = 0;
bool _74HC5951NS = 0;
bool _count1I = 0;
int _count1_Value = 0;
bool _count1MaxLO = 0;
bool _bounseInputD2S = 0;
bool _bounseInputD2O = 0;
unsigned long _bounseInputD2P = 0UL;
 
void setup()
{
pinMode(2, INPUT_PULLUP); 
 
 
_bounseInputD2O =  digitalRead(2);
SPI.begin();
pinMode(10, OUTPUT);
pinMode(8, OUTPUT);
pinMode(8, OUTPUT);
 
}
void loop()
{
 
 
bool  _bounceInputTmpD2 =  (digitalRead (2));
 
if (_bounseInputD2S) 
    {
     if (millis() >= (_bounseInputD2P + 40)) 
         {_bounseInputD2O= _bounceInputTmpD2; _bounseInputD2S=0;}
     }
else
    {
     if (_bounceInputTmpD2 != _bounseInputD2O )
         {_bounseInputD2S=1; _bounseInputD2P = millis();} 
      } 
 
 
 
 
//Плата:1
_74HC5952NS = 0;
bitWrite(_74HC5952TB, 0, 0);
bitWrite(_74HC5952TB, 1, 0);
bitWrite(_74HC5952TB, 2, 0);
bitWrite(_74HC5952TB, 3, 0);
bitWrite(_74HC5952TB, 4, 0);
bitWrite(_74HC5952TB, 5, 0);
bitWrite(_74HC5952TB, 6, 0);
bitWrite(_74HC5952TB, 7, 0);
if(! (_74HC5952TB == _74HC5952OB1)){_74HC5952OB1 = _74HC5952TB; _74HC5952NS = 1;}
bitWrite(_74HC5952TB, 0, 0);
bitWrite(_74HC5952TB, 1, 0);
bitWrite(_74HC5952TB, 2, 0);
bitWrite(_74HC5952TB, 3, 0);
bitWrite(_74HC5952TB, 4, 0);
bitWrite(_74HC5952TB, 5, 0);
bitWrite(_74HC5952TB, 6, 0);
bitWrite(_74HC5952TB, 7, 0);
if(! (_74HC5952TB == _74HC5952OB2)){_74HC5952OB2 = _74HC5952TB; _74HC5952NS = 1;}
if (_74HC5952NS) {
digitalWrite(8, 0);
SPI.transfer(_74HC5952OB2);
SPI.transfer(_74HC5952OB1);
digitalWrite(8, 1);}
if (!(_bounseInputD2O)) {if (! _gen1I) { _gen1I = 1; _gen1O = 1; _gen1P =  millis(); } } else { _gen1I = 0 ;  _gen1O= 0;  } if (_gen1I ) { if (_gen1O) { if ( _isTimer( _gen1P , 50 )) { _gen1P = millis(); _gen1O = 0; } } else  { if ( _isTimer( _gen1P , 50 )) {  _gen1P = millis(); _gen1O = 1;  } } }
if (_gtv1){_count1_Value = 0;} else {
if (_gen1O){
if ( ! _count1I) { 
_count1I = 1;
_count1_Value = _count1_Value + 1;
}} else {
_count1I = 0;}
}
_count1MaxLO = _count1_Value >= 16; 
_74HC5951NS = 0;
bitWrite(_74HC5951TB, 0, (_count1_Value == 1));
bitWrite(_74HC5951TB, 1, (_count1_Value == 2));
bitWrite(_74HC5951TB, 2, (_count1_Value == 3));
bitWrite(_74HC5951TB, 3, (_count1_Value == 4));
bitWrite(_74HC5951TB, 4, (_count1_Value == 5));
bitWrite(_74HC5951TB, 5, (_count1_Value == 6));
bitWrite(_74HC5951TB, 6, (_count1_Value == 7));
bitWrite(_74HC5951TB, 7, (_count1_Value == 8));
if(! (_74HC5951TB == _74HC5951OB1)){_74HC5951OB1 = _74HC5951TB; _74HC5951NS = 1;}
bitWrite(_74HC5951TB, 0, (_count1_Value == 9));
bitWrite(_74HC5951TB, 1, (_count1_Value == 10));
bitWrite(_74HC5951TB, 2, (_count1_Value == 11));
bitWrite(_74HC5951TB, 3, (_count1_Value == 12));
bitWrite(_74HC5951TB, 4, (_count1_Value == 13));
bitWrite(_74HC5951TB, 5, (_count1_Value == 14));
bitWrite(_74HC5951TB, 6, (_count1_Value == 15));
bitWrite(_74HC5951TB, 7, (_count1_Value == 16));
if(! (_74HC5951TB == _74HC5951OB2)){_74HC5951OB2 = _74HC5951TB; _74HC5951NS = 1;}
if (_74HC5951NS) {
digitalWrite(8, 0);
SPI.transfer(_74HC5951OB2);
SPI.transfer(_74HC5951OB1);
digitalWrite(8, 1);}
_gtv1 = _count1MaxLO;
 
 
 
 
 
 
}
 
bool _isTimer(unsigned long startTime, unsigned long period )
  {
  unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
  }
 
sadman41
Offline
Зарегистрирован: 19.10.2016

Сильно запахло FLProg-ом, ПДК почти достигнут.

Гриша
Offline
Зарегистрирован: 27.04.2014

михан пишет:

ну вот и все ну вот и все я ухожу из твоей жизни!!!!

:) главное - результат!!! раз хватило серого вещества на такую феерическую хрень... вы главное не бросайте... дальше будет интересней :))))))))))))))))))))))))))))
михан
Offline
Зарегистрирован: 27.09.2020

 Вас понил так и сделаю  !