Связка Mega2560 с p10 led module

tika
Offline
Зарегистрирован: 22.07.2015

MikSer Спасибо- еще не разобрался где время задержи на сработкус cтоп и сброса и таг-же не перевел на 100 пока.

tika
Offline
Зарегистрирован: 22.07.2015

Здравствуйте MikSer.Вопрос – не могу уменьшить индикацию до 100, не могу найти где время задержки на с работку СТОП и СБРОС- может зависит от наминала подтягивающего сопротивления –какое оно должно быть? 10К. Удобнее если добавить дополнительно кнопку СТОП 1 на 2 секундомера а на старте оставить с функцией СБРОС и сразу начала отсчёта. Если возможность уменьшить расстояние между точками, в вашем случае точка используется как цифра? Как все это скорректировать. Направить в нужное русло.   

MikSer
Offline
Зарегистрирован: 27.01.2012

Уменьшить индикацию до 100?... ну разделите на 10. Резистор на причем. Я этот горбатый исходник дал, что бы Вы посмотрели на один из 100500 вариантов как сделать секундомер. Я крайне не рекомендую его Вам использовать. Напишите свой скеч с нуля. Тогда у Вас не будет возникать странных вопросов. Искрене надеюсь, что Вы разберетесь сами в поставленной задаче. Для начала просто сделайте секундомер, потом добавляйте элементы управления. Исправлять чужое в 100 раз труднее, чем написать с нуля свое.

tika
Offline
Зарегистрирован: 22.07.2015

Ок-Спасибо.

Все зделал сам - вопрос только как можно уменьшить промедуток точек или точки крайней правой между сс/100сек.ПОМОГИТЕ- .Или точка занимает строго размер цифры?

tika
Offline
Зарегистрирован: 22.07.2015

Здравствуйте MikSer -как прописать, что бы команда СБРОС после СТОП сработала через 6 секунд в проекте на коленях.

 }  
  if (Last2State && Lap2State == LOW) {// выполнять действие    
    LapCount2++;  
 
if (LapCount2 == 0 || LapCount2 == 1) {// выполнять действие "СТОП-1"
      Timer1State= LOW;
      Serial.print("Raider Num ");//выводит строку "Raider Num "
      Serial.print(Raider1);
      Serial.print(", Time - ");//выводит строку ", Time - "
      Serial.println(buffer1);
 
  
     }
    if (LapCount2 == 2) {// выполнять действие "СБРОС Timer-1"
      LapCount1 = 0; 
      TimerMillis1=0;
      print_time1(0);

      Timer1State= LOW;

работа 1й кнопкой.

В этом случае нажатие 1раз сработал СТОП нажатие 2го раза сработал СБРОС.

Нужно СБРОС-1 что-бы сработал через 6 сек после первого нажатия с работки СТОП-1.

после нажатие 2- раза этой кнопки сработает СТОП-2 и после задержки 6 сек с работает СБРОС-2. Скеч 2 с работки кнопки такой-же прописывается дальше на с работку 2-го нажатия ее. 

Он в принцепе Ваш.

tika
Offline
Зарегистрирован: 22.07.2015

Форумчани - что я первый с таким вопросом по поводу ( команды на задержку выполнения команды в ARDUINO)?

Нужна помощь.

как прописать, что бы команда СБРОС после СТОП сработала через 6 секунд в проекте на коленях.

 }  
  if (Last2State && Lap2State == LOW) {// выполнять действие    
    LapCount2++;  
 
if (LapCount2 == 0 || LapCount2 == 1) {// выполнять действие "СТОП-1"
      Timer1State= LOW;
      Serial.print("Raider Num ");//выводит строку "Raider Num "
      Serial.print(Raider1);
      Serial.print(", Time - ");//выводит строку ", Time - "
      Serial.println(buffer1);
 
  
     }
    if (LapCount2 == 1) {// выполнять действие "СБРОС Timer-1"
      LapCount2 = 0; 
      TimerMillis1=0;
      print_time1(0);

 

      Timer1State= LOW; 
____________________________________________________________
Может перекрутить этот вариант?
void loop()
{
  currentTime = millis();                           // считываем время, прошедшее с момента запуска программы
  if(currentTime >= (loopTime + 1000)){              // сравниваем текущий таймер с переменной loopTime + 1 секунда
    digitalWrite(ledPin, !digitalRead(ledPin));     // включаем/выключаем LED
    loopTime = currentTime;                         // в loopTime записываем новое значение
  }

____________________________________________________________

 

MikSer
Offline
Зарегистрирован: 27.01.2012

Я смогу Вам помочь только через пару недель. Я очень занят. Если Вы сами не одолеете элементарную задачу, то будем вместе её топить корявым кодом )))

tika
Offline
Зарегистрирован: 22.07.2015

Большое спасибо за понимание – во всем разобрался, подогнал под себя но в задержке на с работку  что то не тяну. Оперативно. 

Как это решение?

unsigned long timer;

void setup()

  {

  Serial.begin(9600);

  }

void loop(){

  if (timer - millis() < -5000) // здесь устанавливаем время

  {

  Serial.println("Infornation");

  timer = millis();        

  delay(10);              //устранение дребезга

  }

  else{};

}

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

http://arduino.ru/forum/programmirovanie/eshche-raz-migaem-svetodiodom-b...

Читайте классику как работают с миллисом

tika
Offline
Зарегистрирован: 22.07.2015

Здравствуйте -ломаю голову как  врезать в 126 пост ?

Что взять от сюда.Нужна помощь встрял на этом- как это реализовать? 


01 unsigned long prevTime1=0;
02 unsigned long prevTime2=0;
03  
04 if(millis()-prevTime1>1000){
05 prevTime1=millis();
06 //ДЕЙСТВИЕ 1 выполняется каждые 1000мс
07 prevTime2=millis(); 
08 }
09  
10 if(millis()-prevTime2>750){
11 // ДЕЙСТВИЕ 2 выполняется через 750мс после завершения действия 1
12 prevTime2=millis();
13 }

 

tika
Offline
Зарегистрирован: 22.07.2015

Я в 2х шагах от рая - ПОМОГИТЕ.

НАРОД - здесь что - только и помогает  MikSer. Спасибо ему за все. Но где головы с работой Arduino ? РАЗАЧЕРОВАН.

А в ответ тишинааааааа.

 

rndvip
Offline
Зарегистрирован: 04.03.2012
tika
Offline
Зарегистрирован: 22.07.2015

И это к чему? Я видео не собираю -сори но видео треки не поместу.

rndvip
Offline
Зарегистрирован: 04.03.2012

Я к тому что вот так у меня работает, если могу быть чем-то полезен...готов поделиться опытом.

tika
Offline
Зарегистрирован: 22.07.2015

Сори -это конкретика. Но у меня 1 проблема. Пость 126 -как вписать задержку на на выполнениеи команы. С пасибо за отклик -встрял на этом.

Как прописать, что бы команда СБРОС после СТОП сработала через 6 секунд в проекте на коленях.

 }  
  if (Last2State && Lap2State == LOW) {// выполнять действие    
    LapCount2++;  
 
if (LapCount2 == 0 || LapCount2 == 1) {// выполнять действие "СТОП-1"
      Timer1State= LOW;
      Serial.print("Raider Num ");//выводит строку "Raider Num "
      Serial.print(Raider1);
      Serial.print(", Time - ");//выводит строку ", Time - "
      Serial.println(buffer1);
 
  
     }
    if (LapCount2 == 2) {// выполнять действие "СБРОС Timer-1"
      LapCount1 = 0; 
      TimerMillis1=0;
      print_time1(0);

      Timer1State= LOW;

работа 1й кнопкой.

В этом случае нажатие 1раз сработал СТОП нажатие 2го раза сработал СБРОС.

Нужно СБРОС что-бы сработал через 6 сек после первого нажатия  и с работки СТОП.

tika
Offline
Зарегистрирован: 22.07.2015

Определенно понял, что без MikSer не обойтись. Жду как из печки.

rndvip
Offline
Зарегистрирован: 04.03.2012

Я правильно понимаю:

- первый раз нажали - СТОП

- если не нажимаем второй раз, то через 6 сек сброс автоматом, если нажимаем  раньше 6 сек - то ручной сброс

tika
Offline
Зарегистрирован: 22.07.2015

Нет нажатие только 1 раз - но сначоло СТОП и через 6 секунд СБРОС. все на 1 кнопке.

  if (LapCount2 == 2) {// выполнять действие "СБРОС Timer-1" -

тоже   if (LapCount2 == 1) {// выполнять действие "СБРОС Timer-1" 

на первое нажатие

tika
Offline
Зарегистрирован: 22.07.2015

В посте 139  работа кнопок прописано на 2 нажатия 1-СТОП, 2 нажатие -СБРОС

Надо всего 1 нажатие сработка СТОП и через 6  секунд СТОП ( при 1 нажатие 2 операции с задержкой на 6 секуен)

tika
Offline
Зарегистрирован: 22.07.2015

В посте 139  работа кнопок прописано на 2 нажатия 1-СТОП, 2 нажатие -СБРОС

if (LapCount2 == 0 || LapCount2 == 1) {// выполнять действие "СТОП-1" (ЭТО 1-вое нажатие)

 if (LapCount2 == 2) {// выполнять действие "СБРОС Timer-1" (ЭТО 2-ое нажатие)

 

 

Надо всего 1 нажатие сработка СТОП и через 6  секунд СБРОС ( при 1 нажатие 2 операции с задержкой на 6 секуен)

Функция 2-ного нажатия остается - так как 2 нажатие (сработка на 2 канал Табло тоже СТОП и через 6 сек СБРОС)

  if (Last2State && Lap2State == LOW) {// выполнять действие    
    LapCount2++;  
rndvip
Offline
Зарегистрирован: 04.03.2012
long stopTime = 0; // время нажатия кнопки СТОП

void loop()
{
  if (buttonSTOPisPress) // проверка, нажали ли кнопку СТОП
  {
    stopTime = millis(); // фиксируем время нажатия кнопки СТОП
    // далее тут делаешь свои дела, я так понял выводишь результат в сериал порт
  }

  if(stopTime  != 0 && stopTime + 6000 > millis() ) //проверка, если есть время фиксации нажатия кнопки СТОП
  {
     // если есть...то тут делаешь сброс
     stopTime  = 0; // и в конце не забываешь сбросить время фикцсации нажатия кнопки СТОП
  }
 }

 

tika
Offline
Зарегистрирован: 22.07.2015

Функция 2-ного нажатия остается - так как 2 нажатие (сработка на 2 канал Табло тоже СТОП и через 6 сек СБРОС)

  if (Last2State && Lap2State == LOW) {// выполнять действие    
    LapCount2++;  
tika
Offline
Зарегистрирован: 22.07.2015

Функция 2-ного нажатия остается - так как 2 нажатие (сработка на 2 канал Табло тоже СТОП-2 и через 6 сек СБРОС-2) у нас 2 канала индикации и кнопка на 2 канала 1шт. на СТОП и СБРОС.

  if (Last2State && Lap2State == LOW) {// выполнять действие    
    LapCount2++;  
rndvip
Offline
Зарегистрирован: 04.03.2012

Я так и не пойму....

Вообщем: когда наступает тот момент, после которого через 6 секунд должен произойти сброс, вы фиксируете время stopTime = millis()

А в главном цике loop() постоянно проверяете, если время "стопа" зафиксировано stopTime != 0 и прошло 6 секунд millis() - stopTime >= 6000  то делаете СБРОС, и время stopTime =0.

tika
Offline
Зарегистрирован: 22.07.2015
  if (Last2State && Lap2State == LOW) {// выполнять действие    
    LapCount2++;  
 
if (LapCount2 == 0 || LapCount2 == 1) {// выполнять действие "СТОП-1"
      Timer1State= LOW;
      Serial.print("Raider Num ");//выводит строку "Raider Num "
      Serial.print(Raider1);
      Serial.print(", Time - ");//выводит строку ", Time - "
      Serial.println(buffer1);
 
  
     }
    if (LapCount2 == 1) {// выполнять действие "СБРОС Timer-1"
      LapCount1 = 0; 
      TimerMillis1=0;
      print_time1(0);

      Timer1State= LOW;

if (LapCount2 == 0 || LapCount2 == 2) {// выполнять действие "СТОП-2"
      Timer1State= LOW;
      Serial.print("Raider Num ");//выводит строку "Raider Num "
      Serial.print(Raider1);
      Serial.print(", Time - ");//выводит строку ", Time - "
      Serial.println(buffer1);
 
  
     }
    if (LapCount2 == 2) {// выполнять действие "СБРОС Timer-2"
      LapCount1 = 0; 
      TimerMillis1=0;
      print_time1(0);

 

      Timer1State= LOW;

В нашем случае 1-е нажатие выводит //выводит строку "Raider Num ", //выводит строку ", Time - " потом в этом случае нажатие 2-е и происходит // выполнять действие "СБРОС Timer-1"

нам нужно при первом нажатие (только 1-е нажатие сработал// выполнять действие "СТОП-1" вывело на табло //выводит строку "Raider Num ", //выводит строку ", Time - " и через 6 секунд само СБРОС // выполнять действие "СБРОС Timer-1"  

функция 2х нажатий кнопки сохраняется -

  if (Last2State && Lap2State == LOW) 

 

    LapCount2++;  

    так как 2 =е нажатие этой-же кнопки сработает тоже так СТОП и СБРОС для 2рого канало 2-рого табло СТОП-2 и 6 сек СБРОС-2 канала

tika
Offline
Зарегистрирован: 22.07.2015
 }  
  if (Last2State && Lap2State == LOW) {// выполнять действие    
    LapCount2++;  
 
if (LapCount2 == 0 || LapCount2 == 1) {// выполнять действие "СТОП-1"
      Timer1State= LOW;
      Serial.print("Raider Num ");//выводит строку "Raider Num "
      Serial.print(Raider1);
      Serial.print(", Time - ");//выводит строку ", Time - "
      Serial.println(buffer1);
 
  
     }
    if (LapCount2 == 1) {// выполнять действие "СБРОС Timer-1"
      LapCount1 = 0; 
      TimerMillis1=0;
      print_time1(0);

      Timer1State= LOW;

 
if (LapCount2 == 0 || LapCount2 == 2) {// выполнять действие "СТОП-2"
      Timer1State= LOW;
      Serial.print("Raider Num ");//выводит строку "Raider Num "
      Serial.print(Raider1);
      Serial.print(", Time - ");//выводит строку ", Time - "
      Serial.println(buffer1);
 
  
     }
    if (LapCount2 == 2) {// выполнять действие "СБРОС Timer-2"
      LapCount1 = 0; 
      TimerMillis1=0;
      print_time1(0);

      Timer1State= LOW;

 

Вот принцеп работы 1-й кнопки с отработкой 2-ного нажатия и здесь 2 канала табло СТОП-1, СБРОС-1 и СТОП-2, СБРОС-2. и всего  должно 2 нажатия( 1-нажатие СТОП-1и 6 сек СБОРС-2 /  2-нажатие СТОП-2 и  6 сек СБРОС-2)

rndvip
Offline
Зарегистрирован: 04.03.2012

При всем моем старании я не понимаю что за переменные и за что они отвечают.

Выше я описал алгоритм, как сделать автоматический сброс после 6 секунд. Что в нем вам не понятно? Или вы хотите чтоб я полностью переписал ваш код?

tika
Offline
Зарегистрирован: 22.07.2015

Спасибо опробую ваше решение.

tika
Offline
Зарегистрирован: 22.07.2015

Что-то я  не тяну.

tika
Offline
Зарегистрирован: 22.07.2015

Сори - но я одного не могу понять , люди сюда заходят просто почитать или кинуть куски  типа решайте  .Да я таких десяток  могу нарезать и скинуть - типа додумай- а врезать не получается. Конкретные вопросы на понимание в оказание помощи -заблудшим. А тут- книжки чтитать в другом месте можно- не так? Сори если я в 4 постак описал проблему -для вас это написать кусок как....А тут -может и кашу за вас есть.Это библиотека?

zura36
Offline
Зарегистрирован: 12.11.2015

MikSer пишет:

Это все очень печально. Начни с установки библиотеки DMD.

https://github.com/freetronics/DMD 

Далее попробуй стандартные примеры что ли. 

Так подключи.

Не забудь дать 5 вольт на панель, минуса соедини с МК. Учти 2 ампера на одну панель.

я сделал так, но толка ДМД2 работает.
мега + W5100+DMD2-как реализовать.
MikSer
Offline
Зарегистрирован: 27.01.2012

мега + W5100+DMD2-как реализовать.

Я на UNO с этой связкой сделал так.

#define DISPLAYS_ACROSS 4
#define DISPLAYS_DOWN 1
#define pin_noe 4
#define pin_a 5
#define pin_b 6
#define pin_sck 8
#define pin_clk 7
#define pin_r_data 9

SoftDMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN, pin_noe, pin_a, pin_b, pin_sck, pin_clk, pin_r_data);

как видно при инициализации можно переназначять пины в версии DMD2.

И W5100 работает.

tika
Offline
Зарегистрирован: 22.07.2015

Здравствуйте MikSer Не могли-бы Вы подсказать с решением по #126 описанию по проекту на коленях. Спасибо за терпение. С задержкой на выполнение команды.

 

}  
  if (Last2State && Lap2State == LOW) {// выполнять действие    
    LapCount2++;  
 
if (LapCount2 == 0 || LapCount2 == 1) {// выполнять действие "СТОП-Timer-1"
      Timer1State= LOW;
      Serial.print("Raider Num ");//выводит строку "Raider Num "
      Serial.print(Raider1);
      Serial.print(", Time - ");//выводит строку ", Time - "
      Serial.println(buffer1);
 
  
     }
    if (LapCount2 == 2) {// выполнять действие "СБРОС Timer-1"
      LapCount1 = 0; 
      TimerMillis1=0;
      print_time1(0);

      Timer1State= LOW;

работа 1й кнопкой.

В этом случае нажатие 1раз сработал СТОП нажатие 2го раза сработал СБРОС.

Нужно СБРОС-1 что-бы сработал через 6 сек после первого нажатия с работки СТОП-1.

после нажатие 2- раза этой кнопки сработает СТОП-2 и после задержки 6 сек с работает СБРОС-2 2-го Timer2. Скеч 2 с работки кнопки такой-же прописывается дальше на с работку 2-го нажатия ее. 

Он в принципе Ваш.

 

zura36
Offline
Зарегистрирован: 12.11.2015
всё заработало,
пины не менял, в коде был проблема.
tika
Offline
Зарегистрирован: 22.07.2015

Красава.

MikSer
Offline
Зарегистрирован: 27.01.2012

tika, дай полный исходник того что у тебя получилось. И опиши внятно что ты хочеш от ПО.

tika
Offline
Зарегистрирован: 22.07.2015
#include <SPI.h>        //SPI.h Должны быть включены в качестве DMD написана SPI (интегрированная среда жалуется иное)
#include <DMD.h>        
#include <TimerOne.h>   
//#include "Arial_black_16.h"
#include "SystemFont5x7.h"
//#include "Small.h"
#include <Bounce2.h>// Включить библиотека Bounce2 найти здесь:
// Https://github.com/thomasfredericks/Bounce2
// Запустите библиотеку как МДД
#define DISPLAYS_ACROSS 3
#define DISPLAYS_DOWN 1
 
#define Lap1Pin 2
#define Lap2Pin 3
 
// Создание экземпляра другого объекта отказов
Bounce debouncer1 = Bounce(); 
Bounce debouncer2 = Bounce(); 
 
 
DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);// Запустите библиотеку DMD
 
unsigned long TimerMillis1 =0;
unsigned long TimerMillis2 =0;
 
char buffer1[10];
char buffer2[10];
 
boolean Timer1State=LOW;
boolean Timer2State=LOW;
 
long previousMillis = 0;
long interval = 10;
 
int LapCount1=0;
int LapCount2=0;
int Lap1State=0;
int Lap2State=0;
 
int Raider1=0;
int Raider2=0;
 
boolean Last1State=HIGH;
boolean Last2State=HIGH;
 
 
void ScanDMD()
  dmd.scanDisplayBySPI();
  if (Timer1State==HIGH) {
    TimerMillis1++;
  }
  if (Timer2State==HIGH) {
    TimerMillis2++;
  }
}
 
 
void setup(void)// все команды, заключенные между фигурными скобками, выполняются только один раз, при первом запуске программы
{
  Serial.begin(9600);//устанавливаем скорость 9600 бит/сек
  Serial.setTimeout(100);
 
  pinMode(Lap1Pin);
  pinMode(Lap2Pin);
 
  debouncer1.attach(Lap1Pin);
  debouncer2.attach(Lap2Pin);
 
  debouncer1.interval(5);
  debouncer2.interval(5);
 
 
  // инициализировать использование прерываний / CPU TimerOne используется для сканирования и обновления дисплея
  Timer1.initialize( 5000 );           // период в микросекундах на призыв ScanDMD. Все, что больше, чем 5000 (5 мс), и вы можете увидеть мерцание.
  Timer1.attachInterrupt( ScanDMD );   // прикрепить Timer1 прерывание ScanDMD, которая идет на dmd.scanDisplayBySPI ()
  dmd.clearScreen( true );   // верно нормально (все пиксели выкл), ложно отрицательный (все пиксели на)
   // Dmd.selectFont (Arial_Black_16);
  dmd.selectFont(SystemFont5x7);
 
}
 
void loop(void)
{
 
  char Lap1[4];
  char Lap2[4];
  char R1[4];
  char R2[4];
 
  if (Serial.available()) {// Если в буфере есть данные
    // здесь должен быть прием и обработка данных
    Raider1 = Serial.parseInt();
    Raider2 = Serial.parseInt();
 //   if (Raider1 == 0) {// выполнять действие
 //     Timer1State=LOW;
 //   }
 //   if (Raider2 == 0) {// выполнять действие
 //     Timer2State=LOW;
 //   }
 
  }
 
  Last1State = debouncer1.update();
  Last2State = debouncer2.update();
 
  Lap1State = debouncer1.read();
  Lap2State = debouncer2.read();
 
 
  if (Last1State && Lap1State == LOW) {  // выполнять действие   
    LapCount1++;  
 
   
    if (LapCount1 == 1 && Timer1State == LOW) {// выполнять действие "СТАРТ-1"
      Timer1State= HIGH;
 
      LapCount1=0;
       }
    if (LapCount1 == 1 && Timer2State == LOW) {// выполнять действие "СТАРТ-2"
      Timer2State= HIGH;
 
      LapCount1=0;
 
   
    }
  }  
  if (Last2State && Lap2State == LOW) {// выполнять действие     
    LapCount2++;  
 
 if (LapCount2 == 0 || LapCount2 == 1) {// выполнять действие "СТОП-1"
      Timer1State= LOW;
      Serial.print("Raider Num ");//выводит строку "Raider Num "
      Serial.print(Raider1);
      Serial.print(", Time - ");//выводит строку ", Time - "
      Serial.println(buffer1);
    }
    if (LapCount2 == 3) {// выполнять действие "СБРОС Timer-1"
      LapCount2 = 0; 
      TimerMillis1=0;
      print_time1(0);
      Timer1State= LOW;
    }
    if (LapCount2 == 0 || LapCount2 == 2) {// выполнять действие "СТОП-2"
      Timer2State= LOW;
      Serial.print("Raider Num ");//выводит строку "Raider Num "
      Serial.print(Raider2);
      Serial.print(", Time - ");//выводит строку ", Time - "
      Serial.println(buffer2);
    
     }
    if (LapCount2 == 4) {// выполнять действие "СБРОС Timer-2"
      LapCount2 = 0; 
      TimerMillis2=0;
      print_time2(0);
      Timer2State= LOW;
    }
  }  
 
  if(Timer1State== HIGH) {
    print_time1(TimerMillis1*5);
  }
 
  if(Timer2State== HIGH) {
    print_time2(TimerMillis2*5);
  }
  sprintf(Lap1,"L%02d",LapCount1);
  sprintf(Lap2,"L%02d",LapCount2);
  dmd.drawString(0,0, Lap1, 3, GRAPHICS_NORMAL );
  dmd.drawString(0,8, Lap2, 3, GRAPHICS_NORMAL );
 
 
 
 
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis > interval) {
 
    previousMillis = currentMillis;  
    sprintf(R1,"N%02d",Raider1);
    sprintf(R2,"N%02d",Raider2);
    dmd.drawString(22,0, R1, 3, GRAPHICS_NORMAL );
    dmd.drawString(22,8, R2, 3, GRAPHICS_NORMAL ); 
 
 
 
  }    
 
}
 
void print_time1(unsigned long t_milli)
{
 
  int days, hours, mins, secs;
  int fractime;
  unsigned long inttime;
 
  inttime  = t_milli / 1000;
  fractime = t_milli % 100;
 
  days     = inttime / (24*3600);
  inttime  = inttime % (24*3600);
 
  hours    = inttime / 3600;
  inttime  = inttime % 3600;
 
  mins     = inttime / 60;
  inttime  = inttime % 60;
 
  secs = inttime;
 
  sprintf(buffer1, "%01d:%02d.%02d", mins, secs, fractime);
 
  dmd.drawString( 54,0, buffer1, 9, GRAPHICS_NORMAL );
}
 
void print_time2(unsigned long t_milli)
{
  int days, hours, mins, secs;
  int fractime;
  unsigned long inttime;
 
  inttime  = t_milli / 1000;
  fractime = t_milli % 100;
 
  days     = inttime / (24*3600);
  inttime  = inttime % (24*3600);
 
  hours    = inttime / 3600;
  inttime  = inttime % 3600;
 
  mins     = inttime / 60;
  inttime  = inttime % 60;
 
  secs = inttime;
  sprintf(buffer2, "%01d:%02d.%02d", mins, secs, fractime);
  dmd.drawString( 54,8, buffer2, 9, GRAPHICS_NORMAL );
}
tika
Offline
Зарегистрирован: 22.07.2015

В этой части мне осталось исправить ---- чтобы  кнопка LapCount2 или как угодно Lap2 при первом нажатие выполнила действие ( if (LapCount2 == 0 || LapCount2 == 1) {// выполнять действие "СТОП-1") и через 6 секунд выполнила дествие сама ( if (LapCount2 == 3) {// выполнять действие "СБРОС Timer-1") .

При втором нажатие на эту-же кнопку LapCount2 выполнила действие ( if (LapCount2 == 0 || LapCount2 == 2) {// выполнять действие "СТОП-2") и через 6 секунд выполнила деиствие сама ( if (LapCount2 == 4) {// выполнять действие "СБРОС Timer-2")   и все. Помогите.

 

1-нажатие СТОП-1 и через 6 сек СБРОС-1,

2- нажатие СТОП-2 и через 6 сек СБРОС-2.

это все 1 кнопка чтобы было всего 2- ва нажатие на эту кнопку.

у меня прописано 1 нажатие СТОП-1, второе СТОП-2, третие СБРОС-1, четвертое СБРОС-2.

Пробую все вар..- ну не тяну я.

tika
Offline
Зарегистрирован: 22.07.2015

О как я жду Вашей помощи!

Andros
Offline
Зарегистрирован: 19.11.2015

Помогите понять. 

Как такое может быть?!!!

На плате замыкаешь-сохраняет число.через отведенные провода-скидывает на предыдущее сохранение.

https://www.youtube.com/watch?v=x1C8ZDA_bhQ&feature=youtu.be

Andros
Offline
Зарегистрирован: 19.11.2015

MikSer пишет:

Это все очень печально. Начни с установки библиотеки DMD.

https://github.com/freetronics/DMD 

Далее попробуй стандартные примеры что ли. 

Так подключи.

Не забудь дать 5 вольт на панель, минуса соедини с МК. Учти 2 ампера на одну панель.

Помогите понять. 

Как такое может быть?!!!

На плате замыкаешь-сохраняет число.через отведенные провода-скидывает на предыдущее сохранение.

https://www.youtube.com/watch?v=x1C8ZDA_bhQ&feature=youtu.be

MikSer
Offline
Зарегистрирован: 27.01.2012

А как так скидывает отведенные провода на предыдущее состояние?

tika
Offline
Зарегистрирован: 22.07.2015

MikSer-Помогите мне. Ваш проект это просто вещь. Но не могу я решить задержку выполнение команды. 

Крик о помощи. 

MikSer
Offline
Зарегистрирован: 27.01.2012

Щяс разберемся. Как я понял Вы будете управлять всем одной кнопкой. Итак:

1е нажатие - запуск таймера 1 после истечения 6 сек сброс его, 2е нажатие - запуск таймера 2 и по истечении 6 сек его сброс.

Все верно?

Из того описания что выше ну нифига не понять. Опишите все четко и конкретно. Как сброс происходит как остановка таймера, нужен ли счетчик кругов. Короче все четко и по полочкам описывать нужно.

tika
Offline
Зарегистрирован: 22.07.2015

Здравствуйте - Нет у меня 2 кнопки (#define Lap1Pin 2, #define Lap2Pin 3) 

1-кнопка - нажатие первое старт таймера 1, нажатие 2-раза старт таймера 2.

2-кнопка нужно 1-вое нажатие стоп таймера 1 и через 6 секунд само сброс таймера 1,нажатие 2 -го раза этой кнопки стоп таймере 2 и через 6 секунд само брос иаймера 2.

Первая КНОПКА работает в норме ,вторая кнопка не получается - 

в  #166 выделено где не получается НА 2-РОЙ кнопке-

 if (Last2State && Lap2State == LOW) {// выполнять действие     
    LapCount2++;  
 
 if (LapCount2 == 0 || LapCount2 == 1) {// выполнять действие "СТОП-1" 
      Timer1State= LOW;
      Serial.print("Raider Num ");//выводит строку "Raider Num "
      Serial.print(Raider1);
      Serial.print(", Time - ");//выводит строку ", Time - "
      Serial.println(buffer1);
    }
    if (LapCount2 == 3) {// выполнять действие "СБРОС Timer-1" 
      LapCount2 = 0; 
      TimerMillis1=0;
      print_time1(0);
      Timer1State= LOW;
    }
    if (LapCount2 == 0 || LapCount2 == 2) {// выполнять действие "СТОП-2" 
      Timer2State= LOW;
      Serial.print("Raider Num ");//выводит строку "Raider Num "
      Serial.print(Raider2);
      Serial.print(", Time - ");//выводит строку ", Time - "
      Serial.println(buffer2);
    
     }
    if (LapCount2 == 4) {// выполнять действие "СБРОС Timer-2"
      LapCount2 = 0; 
      TimerMillis2=0;
      print_time2(0);
      Timer2State= LOW;
 
здесь прописано про 2 кнопку у меня 1 нажатие СТОП-1, второе СТОП-2, третие СБРОС-1, четвертое СБРОС-2.
а нужно на 2рой кнопке
 
1-нажатие СТОП  ТЙМЕРА -1и через 6 сек само СБРОС  ТАЙМЕРА -1 НА ,

2- нажатие СТОП ТАЙМЕРА -2 и через 6 сек само СБРОС ТАЙМЕРА-2 НА .

ТО ЕСТЬ__________________________________________________________________________________

if (Last2State && Lap2State == LOW) {// выполнять действие     
    LapCount2++;  
 
if (LapCount2 == 0 || LapCount2 == 1) {// выполнять действие "СТОП-1"ЭТО ПЕРВОЕ НАЖАТИЕ КНОПКИ -2
      Timer1State= LOW;
      Serial.print("Raider Num ");//выводит строку "Raider Num "
      Serial.print(Raider1);
      Serial.print(", Time - ");//выводит строку ", Time - "
      Serial.println(buffer1);
 
ЗДЕСЬ НУЖНА КОМАНДА ЗАДЕРЖКИ НА 6СЕКУНД И ВЫПОЛНЕНИЕ СЛЕДУЮЩЕЙ НИЖЕ САМО ВЫПОЛНЕНИЕ
 
    }
    if (LapCount2 == 1) {// выполнять действие "СБРОС Timer-1" при 1 нажатие на кнопку-2
      LapCount2 = 0; 
      TimerMillis1=0;
      print_time1(0);
      Timer1State= LOW;
    }
    if (LapCount2 == 0 || LapCount2 == 2) {// выполнять действие "СТОП-2"ЭТО ВТОРОЕ НАЖАТИЕ КНОПКИ-2
      Timer2State= LOW;
      Serial.print("Raider Num ");//выводит строку "Raider Num "
      Serial.print(Raider2);
      Serial.print(", Time - ");//выводит строку ", Time - "
      Serial.println(buffer2);
 
    ЗДЕСЬ НУЖНА  КОМАНДА ЗАДЕРЖКИ НА 6СЕКУНД И ВЫПОЛНЕНИЕ СЛЕДУЮЩЕЙ НИЖЕ САМО ВЫПОЛНЕНИЕ
     }
    if (LapCount2 == 2) {// выполнять действие "СБРОС Timer-2" при 2 нажатие на кнопку-2
      LapCount2 = 0; 
      TimerMillis2=0;
      print_time2(0);

      Timer2State= LOW;

 

 

 

tika
Offline
Зарегистрирован: 22.07.2015

Помогите.

MikSer
Offline
Зарегистрирован: 27.01.2012

У нас на полуострове света нет, так что ждём как компы за работают )))

tika
Offline
Зарегистрирован: 22.07.2015

MikSer-Большое спасибо жду как из печки. Сожалеем и

всячески поддерживаем ВАС. 

hanko_nikita
Offline
Зарегистрирован: 18.07.2014

Подскажите пожалуйста, а питание led панелей от меги или отдельно, если от меги сколько она сможет потянуть панелей? Спасибо.

tika
Offline
Зарегистрирован: 22.07.2015

Да будит свет на полуострове.