• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
P10, przerwania i DMD2
#1
Witam. Mam problem rodzaju dziwnego. Program który liczy impulsy na wejściu przy pomocy zbocza, liczy czas między impulsami i tworzy liczbę binarną. Jeżeli wstawiam funkcję do wyświetlenia napisu po osiągnięciu odpowiedniej. Niestety DMD2 nie wyświetla mi napisu na P10 - myślę że jest to spowodowane TIMERAMI użytymi do zliczania czasu między przerwaniami ale nie jestem pewny. Wklejam kod programu - może ktoś coś podpowie.

Kod:
#include <SPI.h>
#include <DMD2.h>
#include <fonts/Arial_Black_16.h>
SoftDMD dmd(2,1); 
DMD_TextBox box(dmd,0,0,64,16);
volatile unsigned int timer1_counter;
volatile long dane;
volatile int i=0;
void setup()
{
Serial.begin(9600);
dmd.setBrightness(10);
dmd.selectFont(Arial_Black_16);
dmd.begin();
box.print("testowy_napis");
delay(1000);
dane = 0;
jedynka();
attachInterrupt(0, starttimer, RISING);
TCCR1A = 0;
TCCR1B = 0;timer1_counter = 0; 
TCNT1 = timer1_counter; 
}

void starttimer()
{
static unsigned long lastTime;
unsigned long timeNow = micros();
if (timeNow - lastTime < 600)
    return;

if (timeNow - lastTime < 6000) {
 
    dane=dane<<1;
    dane++;
 
 
          }
if ((timeNow - lastTime > 6500) && (timeNow - lastTime < 10000)) {
    dane=dane<<1;
                                                                }
                                                               
//i++;
if ((timeNow - lastTime > 100000)){ dane=0; i=0;}
lastTime = timeNow;

void jedynka() {
                SoftDMD dmd(2,1);
                DMD_TextBox box(dmd,0,0,64,16);
                dmd.setBrightness(10);
                dmd.selectFont(Arial_Black_16);
                dmd.begin();
                box.print(dane);
                box.print("1231234");
                delay(1000);
                dmd.fillScreen(true);
                delay(1000);
                dmd.clearScreen();
                delay(1000);           
                dmd.end();
                return (0);
    }


void loop()
{
jedynka();
   
}
 
Odpowiedź
#2
A gdzie w funkcji "jedynka", jedynej w "loop" wiec bez sensu, wyświetlasz owe "P10"?
 
Odpowiedź
#3
(02-11-2019, 18:41)semi napisał(a): A gdzie w funkcji "jedynka", jedynej w "loop" wiec bez sensu, wyświetlasz owe "P10"?
Kod:
box.print("1231234");
To że jest jedna teraz - to nie znaczy że będę cały kod wklejał do wyświetlenia reszty Smile
 
Odpowiedź
#4
(02-11-2019, 17:46)strazak napisał(a):  Program który liczy impulsy na wejściu przy pomocy zbocza, liczy czas między impulsami 


A mógłbyś wskazać gdzie ten licznik impulsów i czasu???
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#5
(02-11-2019, 19:14)Jarewa0606 napisał(a):
(02-11-2019, 17:46)strazak napisał(a):  Program który liczy impulsy na wejściu przy pomocy zbocza, liczy czas między impulsami 


A mógłbyś wskazać gdzie ten licznik impulsów i czasu???
ok - Temat do zamknięcia - zmieniłem liczniki i poszło.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości