реклама на сайте
подробности

 
 
> Arduino ura, Program za uro
valter
сообщение Aug 23 2017, 04:50
Сообщение #1





Группа: Участник
Сообщений: 5
Регистрация: 2-08-17
Из: Koper Slovenija
Пользователь №: 98 603



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

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 7)
vvvv
сообщение Aug 23 2017, 05:40
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 3-05-05
Из: г. Волжский
Пользователь №: 4 714



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
Go to the top of the page
 
+Quote Post
valter
сообщение Aug 23 2017, 08:39
Сообщение #3





Группа: Участник
Сообщений: 5
Регистрация: 2-08-17
Из: Koper Slovenija
Пользователь №: 98 603



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-сегментного светодиодного дисплея, который является очень сложным. К сожалению, мое программирование на уровне Копировать - Вставить. Таким образом, необходимо, чтобы помочь изменить программу.
Go to the top of the page
 
+Quote Post
valter
сообщение Aug 30 2017, 20:54
Сообщение #4





Группа: Участник
Сообщений: 5
Регистрация: 2-08-17
Из: Koper Slovenija
Пользователь №: 98 603



Ok napredujem .
Tu je program ki na 5 segmentnem displeju izpiše željeni tekst.
Problem je še vedno program za uro ...

QUOTE
Хорошо, я прогрессирую.
Вот программа, которая отображает желаемый текст на дисплее 5-го сегмента.
Проблема все еще часовая программа.

CODE

#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);
}

Go to the top of the page
 
+Quote Post
valter
сообщение Aug 31 2017, 20:04
Сообщение #5





Группа: Участник
Сообщений: 5
Регистрация: 2-08-17
Из: Koper Slovenija
Пользователь №: 98 603



Прикрепленное изображение

Se mi ne da preveč programirati ....
Prihaja hladna fronta in se bo ohladilo --->spraznila plaža ...potem bo več volje za programiranje...
Go to the top of the page
 
+Quote Post
vvvv
сообщение Sep 1 2017, 07:23
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 3-05-05
Из: г. Волжский
Пользователь №: 4 714



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 sm.gif
Go to the top of the page
 
+Quote Post
Lagman
сообщение Sep 1 2017, 12:17
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Так вроде полно в инете проектов таймеров на arduino и MAX 7219, как раз для copy-paste
Вот для примера https://brainy-bits.com/blogs/tutorials/ard...max7219-display
Go to the top of the page
 
+Quote Post
valter
сообщение Sep 1 2017, 21:12
Сообщение #8





Группа: Участник
Сообщений: 5
Регистрация: 2-08-17
Из: Koper Slovenija
Пользователь №: 98 603



Logman hvala za link beer.gif Dela... Samo še moram vse skupaj pretvoriti v minute sad.gif .
Zunaj se je malo ohladilo , pa bo več časa za programiranje...

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

Сообщение отредактировал valter - Sep 1 2017, 21:13
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 06:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01435 секунд с 7
ELECTRONIX ©2004-2016