Перейти к содержанию
    

Arduino ura

Sem iz Slovenije (EX YUgoslavija) . Se opravičujem , ker pišem v slovenščini . Mislim da je tako najbolje , saj vsi uporabljamo google translate.

 

Torej rad bi sestavi uro - ki bi odštevale od 60 minut do nič.

 

Rad bi uporabil displej MAX 7219 in arduino UNO..

 

Prosil bi za uporaben program . To pa rabim za igrico ESCAPE HAUSE .

 

Za pomoč se že vnaprej zahvaljujem.

 

Lep pozdrav iz sončne Slovenije -Primorske - mesta KOPER (Najlepšega obmorskega mesta).

L.P. Valter

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Valter if you use google translate, it's polite to post the text translated to target language or in English.

Вот перевод его поста с словенского, прикольный парень ...:

Я из Словении (EX YUgoslavia). Прошу прощения за письмо в словенском. Я думаю, что это лучшее, потому что мы все используем google translate.

Поэтому я хотел бы сделать час - который отсчитывал бы от 60 минут до нуля.

Я хотел бы использовать дисплей MAX 7219 и arduino UNO ..

Я бы попросил полезную программу. Это то, что мне нужно для ESCAPE HAUSE.

Я уже заранее благодарю вас за помощь.

Привет из солнечной Словении - Приморская - город КОПЕР (самый красивый прибрежный город).

Л.П. Valter

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

vvvv Se zahvaljujem za pomoč. Bom probal prevajati.Bojim pa se , da bo Googlova Ruščina težko razumljiva.Če ne bo kaj narobe , bi dal gor oba teksta , da bo lahko kdo še kaj dodal (v prevajanju)

OK imam program za 7 segmentni led prikazovalnik , ki je zelo kompliciran. Na žalost je moje programiranje na nivoji Copy - paste. Zato bi rabil pomoč pri spremembi programa.

 

/*
* Creato da Roberto Tortora.
* Sara' anche scritta male, ma è il primo codice che ho scritto per arduino, e sono fiero del mio lavoro :D
*/


#include <Multiplex7Seg.h> // libreria per gli schermi a 7 segmenti con 4 cifre, riscritta con logica invertita
#include <atdlib.h>

byte digitPins[] = {6,9,10,11}; // LSB to MSB
byte segmentPins[] = {13,3,4,5,12,7,8}; // seg a to g

int perndicarattere();

void setup() {
  
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  pinMode(A2, INPUT);
  pinMode(A3, INPUT);
  pinMode(A4, OUTPUT);
  pinMode(A5, OUTPUT);
  
  digitalWrite(0, LOW);
  
  int tasto, soluzione=0;
  
  Multiplex7Seg::set(1, 4, digitPins, segmentPins);
  int  bool1=0,
       j=0, k=0, x, //j minuti- k secondi - x tempo 
       bool2=0, z=1000, // -z velocità decremento 
        tasto_old=0,
       flag=0, reset=0, codice=0, buffer=0, key=16, reset2=0; // reset e codice disinnesco
  while (1) {   // ciclo che setta il codice per disinnesco all'avvio
     key=prendicarattere();
     
     Multiplex7Seg::loadValue(codice);
     if (buffer<=key && key<=9) {
       buffer=key;
       flag=0;
     }
     
     if(analogRead(A0)==0 && analogRead(A1)==0 && analogRead(A2)==0 && analogRead(A3)==0 && flag==0) {
       codice=(codice *10)+buffer;
       if (codice!=0) 
       reset2++;
       buffer=0;
       flag=1;
       Multiplex7Seg::loadValue(codice);
     }
     if (key==11 && reset2==4) {
       break;
     }
    if (key==10) {
       reset2=0;
       flag=1;
       codice=0;
    }
    if (reset2>4) {
     reset2=0;
     codice=0;
     digitalWrite(0, HIGH);
     delay(50);
     digitalWrite(0, LOW);
    }
  }
  j=0; k=0;
  buffer=0;
  key=16;
  reset2=0;
  flag=1;
  
  while (1) {   // ciclo che setta i minuti
     key=prendicarattere();
     
     Multiplex7Seg::loadValue(j);
     if (buffer<=key && key<=9) {
       buffer=key;
       flag=0;
     }
     
     if(analogRead(A0)==0 && analogRead(A1)==0 && analogRead(A2)==0 && analogRead(A3)==0 && flag==0) {
       j=(j *10)+buffer;
       if (j!=0) 
       reset2++;
       buffer=0;
       flag=1;
       Multiplex7Seg::loadValue(j);
     }
     if (key==11 && reset2<=2 && reset2>=1) {
       break;
     }
    if (key==10) {
       reset2=0;
       flag=1;
       j=0;
    }
    if (reset2>2) {
     reset2=0;
     j=0;
     digitalWrite(0, HIGH);
     delay(50);
     digitalWrite(0, LOW);
    }
  }
  
  int pin[4]; // pin inizializzazione e dichiarazione dei pin per disinnescare la bomba
  
  pin[0]=A5;
  pin[1]=A4;
  pin[2]=2;
  pin[3]=1;
  
  buffer=0;
  key=16;
  reset2=0;
  flag=1;
  
  int filo=0, caso;
  
  while (1) {   // ciclo che setta il filo che disinnesca la bomba e sceglie casualmente i restanti fili cosa fanno
     key=prendicarattere();
     
     Multiplex7Seg::loadValue(filo);
     if (buffer<=key && key<=4) {
       buffer=key;
       flag=0;
     }
     
     if(analogRead(A0)==0 && analogRead(A1)==0 && analogRead(A2)==0 && analogRead(A3)==0 && flag==0) {
       filo=buffer;
       if (filo!=0) 
       reset2++;
       buffer=0;
       flag=1;
       Multiplex7Seg::loadValue(filo);
     }
     if (key==11 && reset2==1) {
       break;
     }
    if (key==10) {
       reset2=0;
       flag=1;
       filo=0;
    }
    if (reset2>1) {
     reset2=0;
     filo=0;
     digitalWrite(0, HIGH);
     delay(50);
     digitalWrite(0, LOW);
    }
  }
  
  buffer=0;
  srand(millis());
  
  int i;
  
  switch (filo) {
   case 1: buffer=pin[0];
           pin[0]=pin[2];
           pin[2]=buffer;

           break;
           
   case 2: buffer=pin[1];
           pin[1]=pin[2];
           pin[2]=buffer;
           break;
           
   case 3:  break;
           
   case 4: buffer=pin[3];
           pin[3]=pin[2];
           pin[2]=buffer;
           break;
   }
  
  while (1) { //ciclo del timer
      x=j*100+k;
      digitalWrite(0, LOW);
      if (k==0) { // riavvolgimento secondi
         j--;
         k=60;
      }
      
      if (((millis())%z)==0) {
      k--;
      digitalWrite(0, HIGH); //accensione cicalino
      delay(50);
      digitalWrite(0, LOW); //spegnimento cicalino
      }
      
     if (!digitalRead(pin[3])==true) { // se il filo viene staccato  il timer scorre piu' velocemente
       z=500;
      }
     if (!digitalRead(pin[2])==true) { // se il filo viene staccato  il timer bloccato e la bomba disinnescata
     break;
     }
     if (!digitalRead(pin[1])==true && bool1==0) { //se il filo viene staccato ... boom
     j=0;
     k=0;
     bool1++;
     }
     if (!digitalRead(pin[0])==true && bool2==0) { //se il filo viene staccato so dimezza il tempo
     j=j/2;
     k=k/2;
     bool2++;
     }
     Multiplex7Seg::loadValue(x); // carica un valore intero preso da x

     tasto=prendicarattere();
     
     if (tasto_old<=tasto && tasto<=9) {
       tasto_old=tasto;
       flag=0;
     }
     
     if(analogRead(A0)==0 && analogRead(A1)==0 && analogRead(A2)==0 && analogRead(A3)==0 && flag==0) {
       soluzione=(soluzione *10)+tasto_old;
       if (soluzione!=0) 
       reset++;
       tasto_old=0;
       flag=1;
     }
     
     if(tasto==10) { //reset soluzione
       soluzione=0;
       flag=1;
     }
     
     if (tasto==11) { // visualizzazione della soluzione su schermo
       Multiplex7Seg::loadValue(soluzione);
       delay(1000);
       if (k==0)
       j--; else k--;
       if (j<=0 && k==0) {
         Multiplex7Seg::loadValue(0);
         break;
       }
     }
     
     if (reset==4 && soluzione != codice) {
      reset=0;
      soluzione=0;
      digitalWrite(0, HIGH);
      delay(500);
      digitalWrite(0, LOW);
     }
     
     if(soluzione == codice) { // confronto soluzione
        Multiplex7Seg::loadValue(8888);
        break;
     }
     
     if (j==0 && k==0) { // caso in cui il tempo scade
          Multiplex7Seg::loadValue(0);
          digitalWrite(0, HIGH);
          delay(1000);
          digitalWrite(0, LOW);
          break;
      }
  }
}

void loop() { 

  Multiplex7Seg::loadValue(8888);
  
}

int prendicarattere(void) {
  if (analogRead(A0)>=100) {
    if (analogRead(A0)>=140 && analogRead(A0)<=160) { // Corrispondente alla I Riga
      return 1;
      
    }
    if (analogRead(A0)>=280 && analogRead(A0)<=310) {
      return 2;
      
    }
    if (analogRead(A0)>=470 && analogRead(A0)<=510) {
      return 3;
      
    }
    if (analogRead(A0)>=800 && analogRead(A0)<=830) {
      return 12;
      
    }
  }
  
  if (analogRead(A1)>=100) {
    if (analogRead(A1)>=140 && analogRead(A1)<=160) { // Corrispondente alla II Riga
      return 4;
      
    }
    if (analogRead(A1)>=280 && analogRead(A1)<=310) {
      return 5;
      
    }
    if (analogRead(A1)>=470 && analogRead(A1)<=510) {
      return 6;
      
    }
    if (analogRead(A1)>=800 && analogRead(A1)<=830) {
      return 13;
      
    }
  }
  
   if (analogRead(A2)>=100) {
    if (analogRead(A2)>=140 && analogRead(A2)<=160) { // Corrispondente alla III Riga
      return 7;
      
    }
    if (analogRead(A2)>=280 && analogRead(A2)<=310) {
      return 8;
      
    }
    if (analogRead(A2)>=470 && analogRead(A2)<=510) {
      return 9;
      
    }
    if (analogRead(A2)>=800 && analogRead(A2)<=830) {
      return 14;
      
    }
   }
    
   if (analogRead(A3)>=100) {
    if (analogRead(A3)>=140 && analogRead(A3)<=160) { // Corrispondente alla IV Riga
      return 10;
      
    }
    if (analogRead(A3)>=280 && analogRead(A3)<=310) {
      return 0;
      
    }
    if (analogRead(A3)>=470 && analogRead(A3)<=510) {
      return 11;
      
    }
    if (analogRead(A3)>=800 && analogRead(A3)<=830) {
      return 15;
      
    } 
   }
   return 16;
}

VVVV спасибо за вашу помощь. Буду ли я попробовал prevajati.Bojim, что России трудно razumljiva.Če Google не ошибется, отказаться от двух текстов, что кто-то может что-нибудь добавить (в переводе)

Хорошо у меня есть программа для 8-сегментного светодиодного дисплея, который является очень сложным. К сожалению, мое программирование на уровне Копировать - Вставить. Таким образом, необходимо, чтобы помочь изменить программу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ok napredujem .

Tu je program ki na 5 segmentnem displeju izpiše željeni tekst.

Problem je še vedno program za uro ...

 

Хорошо, я прогрессирую.

Вот программа, которая отображает желаемый текст на дисплее 5-го сегмента.

Проблема все еще часовая программа.

 
#include "LedControlMS.h"

/*
  
pin 12 is connected to the DataIn 
pin 11 is connected to the CLK 
pin 10 is connected to LOAD 
We have only a single MAX72XX.
*/
#define NBR_MTX 4 
LedControl lc=LedControl(12,11,10, 1);


/* we always wait a bit between updates of the display */
String scrollString= "sebastjanova kitajska trgovina  xx";
int stringLength=scrollString.length();
char ch0, ch1, ch2, ch3;
int nextCharIndex=0;


void setup() {
  /*
   The MAX72XX is in power-saving mode on startup,
   we have to do a wakeup call
   */
  Serial.begin (9600);
  Serial.println("SEBA");
  Serial.println(scrollString);
  Serial.println(stringLength);

  for (int i=0; i< NBR_MTX; i++){
    lc.shutdown(i,false);
  /* Set the brightness to a low value */
    lc.setIntensity(i,8);
  /* and clear the display */
    lc.clearDisplay(i);
  }
  delay(800);
  lc.clearAll();
  ch0= scrollString[0];
  ch1= scrollString[1];
  ch2= scrollString[2];
  ch3= scrollString[3];
  nextCharIndex=4;
}

void loop(){
  lc.displayChar(0, lc.getCharArrayPosition(ch0));
  lc.displayChar(1, lc.getCharArrayPosition(ch1));
  lc.displayChar(2, lc.getCharArrayPosition(ch2));
  lc.displayChar(3, lc.getCharArrayPosition(ch3));
  ch0=ch1;
  ch1=ch2;
  ch2=ch3;
  ch3=scrollString[nextCharIndex++];
  if (nextCharIndex>=stringLength) nextCharIndex=0;
  delay(1000);
  lc.clearAll();
  delay(25);
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

post-98603-1504209653_thumb.jpg

Se mi ne da preveč programirati ....

Prihaja hladna fronta in se bo ohladilo --->spraznila plaža ...potem bo več volje za programiranje...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Valter, I'm really sorry for the all participants of this forum. But it's obvious you will not get help here.

Arduino is not a professional hardware. To answer on your questions user should have board and time to check your software.

 

Try other forums connected with the Arduino via Google

like this http://arduino.ru/forumy/programmirovanie

or this https://forum.arduino.cc/index.php?PHPSESSI...1&board=4.0

Thank you for the photo :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так вроде полно в инете проектов таймеров на arduino и MAX 7219, как раз для copy-paste

Вот для примера https://brainy-bits.com/blogs/tutorials/ard...max7219-display

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Logman hvala za link :beer: Dela... Samo še moram vse skupaj pretvoriti v minute :( .

Zunaj se je malo ohladilo , pa bo več časa za programiranje...

 

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

post-98603-1504299678_thumb.jpg

Изменено пользователем valter

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...