IR senzory, LED matice a červené LED diody, prosím o pomoc.

Odpovědět
jandafilip
Příspěvky: 7
Registrován: 14 kvě 2020, 11:43
Reputation: 0

IR senzory, LED matice a červené LED diody, prosím o pomoc.

Příspěvek od jandafilip » 14 kvě 2020, 16:08

Dobrý den,

jsem začátečník, který se učí z fór, článků a různých diskuzí. Sestavil jsem si vlastní fotbálek na míru a teď ho chci osadit senzory, dvěmi LED maticemi a čtyřmi diodami v obou brankách. Celý projekt má fungovat tak, že po vstřelení gólu sepne senzor ve žlábku, kterým projíždí míček, na LED miatici se zobrazí číslo 1 a branka třikrát problikne. Povedlo se mi rozběhnout senzory v obou brankách a po vstřelení gólu se třikrát rozsvítí diody, ale i po stažení LEDControl se mi nedaří na displej dostat to co potřebuji. Moc Vás prosím o radu zda by někdo nevěděl jak naprogramovat, popřípadě jak docílit toho aby se mi měnilo číslo na displeji když padne branka.Zde je kód, který jsem vymyslel, abych tomu rozuměl a byl si jistý co co dělá. Navíc jsem tam přidal LEDControl a skore1.

Děkuji moc za odpovědi

//nastavení senzorů ve žlábcích

int senzordomaci1 = 5; // číslo pinu připojeného senzoru
int senzordomaci2 = 4; // číslo pinu připojeného senzoru
int senzorhoste1 = 3; // číslo pinu připojeného senzoru
int senzorhoste2 = 2; // číslo pinu připojeného senzoru

//nastavení diod v brankách

int brankadomaci = 6; // číslo pinu připojených LED diod
int brankahoste = 13; // číslo pinu připojených LED diod

//vytvoření proměnné, když padne gól

int goldomaci1 = 1; //proměnná pro domácí senzor 1
int goldomaci2 = 1; //proměnná pro domácí senzor 2
int golhoste1 = 1; //proměnná pro hostí senzor 1
int golhoste2 = 1; //proměnná pro hostí senzor 2

#include <LedControl.h>
LedControl hosteD = new LedControl(7, 8, 9, 1)
LedControl domaciD = new LedControl(10, 11, 12, 1)

const int skore1[][8] = {
{
B00011000,
B00011000,
B00011000,
B00011000,
B00011000,
B00011000,
B00011000,
B00011000
}
}

void setup() {

pinMode(brankadomaci, OUTPUT); //nastevení LED diod jako výstup
pinMode(brankahoste, OUTPUT); //nastevení LED diod jako výstup

pinMode(senzordomaci1, INPUT); //nastevení senzorů jako vstup
pinMode(senzordomaci2, INPUT); //nastevení senzorů jako vstup
pinMode(senzorhoste1, INPUT); //nastevení senzorů jako vstup
pinMode(senzorhoste2, INPUT); //nastevení senzorů jako vstup
}

void loop() {

goldomaci1 = digitalRead(senzordomaci1);
// jestliže senzor zachytí pohyb rozsvítí se LED diody
if (goldomaci1 == LOW) {

digitalWrite(brankadomaci, HIGH); //zapnutí LED diod
delay(500);
digitalWrite(brankadomaci, LOW); //vypnutí LED diod
delay(500);
digitalWrite(brankadomaci, HIGH); //zapnutí LED diod
delay(500);
digitalWrite(brankadomaci, LOW); //vypnutí LED diod
delay(500);
digitalWrite(brankadomaci, HIGH); //zapnutí LED diod
delay(500);
}
// pokud není stisknuto tlačítko, stav je LOW - log. 0
else {
// vypne LED diodu
digitalWrite(brankadomaci, LOW);
}
goldomaci2 = digitalRead(senzordomaci2);
if (goldomaci2 == LOW) {
digitalWrite(brankadomaci, HIGH);
delay(500);
digitalWrite(brankadomaci, LOW);
delay(500);
digitalWrite(brankadomaci, HIGH);
delay(500);
digitalWrite(brankadomaci, LOW);
delay(500);
digitalWrite(brankadomaci, HIGH);
delay(500¨;
}
else {
digitalWrite(brankadomaci, LOW);
}
golhoste1 = digitalRead(senzorhoste1);
if (golhoste1 == LOW) {
digitalWrite(brankahoste, HIGH);
delay(500);
digitalWrite(brankahoste, LOW);
delay(500);
digitalWrite(brankahoste, HIGH);
delay(500);
digitalWrite(brankahoste, LOW);
delay(500);
digitalWrite(brankahoste, HIGH);
delay(500¨;
}
else {
digitalWrite(brankahoste, LOW);
}

golhoste2 = digitalRead(senzorhoste2);
if (golhoste2 == LOW) {
digitalWrite(brankahoste, HIGH);
delay(500);
digitalWrite(brankahoste, LOW);
delay(500);
digitalWrite(brankahoste, HIGH);
delay(500);
digitalWrite(brankahoste, LOW);
delay(500);
digitalWrite(brankahoste, HIGH);
delay(500¨;
}
else {
digitalWrite(brankahoste, LOW);
}
}

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: IR senzory, LED matice a červené LED diody, prosím o pomoc.

Příspěvek od ondraN » 15 kvě 2020, 06:59

Příště vkládej kód rovnou do těch závorek označenýh </>

Kód: Vybrat vše

//nastavení senzorů ve žlábcích

int senzordomaci1 = 5; // číslo pinu připojeného senzoru
int senzordomaci2 = 4; // číslo pinu připojeného senzoru
int senzorhoste1 = 3; // číslo pinu připojeného senzoru
int senzorhoste2 = 2; // číslo pinu připojeného senzoru

//nastavení diod v brankách

int brankadomaci = 6; // číslo pinu připojených LED diod
int brankahoste = 13; // číslo pinu připojených LED diod

//vytvoření proměnné, když padne gól

int goldomaci1 = 1; //proměnná pro domácí senzor 1
int goldomaci2 = 1; //proměnná pro domácí senzor 2
int golhoste1 = 1; //proměnná pro hostí senzor 1
int golhoste2 = 1; //proměnná pro hostí senzor 2

#include <LedControl.h>
LedControl hosteD = new LedControl(7, 8, 9, 1)
LedControl domaciD = new LedControl(10, 11, 12, 1)

const int skore1[][8] = {
{
B00011000,
B00011000,
B00011000,
B00011000,
B00011000,
B00011000,
B00011000,
B00011000
}
}

void setup() {

pinMode(brankadomaci, OUTPUT); //nastevení LED diod jako výstup
pinMode(brankahoste, OUTPUT); //nastevení LED diod jako výstup

pinMode(senzordomaci1, INPUT); //nastevení senzorů jako vstup
pinMode(senzordomaci2, INPUT); //nastevení senzorů jako vstup
pinMode(senzorhoste1, INPUT); //nastevení senzorů jako vstup
pinMode(senzorhoste2, INPUT); //nastevení senzorů jako vstup
}

void loop() {

goldomaci1 = digitalRead(senzordomaci1);
// jestliže senzor zachytí pohyb rozsvítí se LED diody
if (goldomaci1 == LOW) {

digitalWrite(brankadomaci, HIGH); //zapnutí LED diod
delay(500);
digitalWrite(brankadomaci, LOW); //vypnutí LED diod
delay(500);
digitalWrite(brankadomaci, HIGH); //zapnutí LED diod
delay(500);
digitalWrite(brankadomaci, LOW); //vypnutí LED diod
delay(500);
digitalWrite(brankadomaci, HIGH); //zapnutí LED diod
delay(500);
}
// pokud není stisknuto tlačítko, stav je LOW - log. 0
else {
// vypne LED diodu
digitalWrite(brankadomaci, LOW);
}
goldomaci2 = digitalRead(senzordomaci2);
if (goldomaci2 == LOW) {
digitalWrite(brankadomaci, HIGH);
delay(500);
digitalWrite(brankadomaci, LOW);
delay(500);
digitalWrite(brankadomaci, HIGH);
delay(500);
digitalWrite(brankadomaci, LOW);
delay(500);
digitalWrite(brankadomaci, HIGH);
delay(500¨;
}
else {
digitalWrite(brankadomaci, LOW);
}
golhoste1 = digitalRead(senzorhoste1);
if (golhoste1 == LOW) {
digitalWrite(brankahoste, HIGH);
delay(500);
digitalWrite(brankahoste, LOW);
delay(500);
digitalWrite(brankahoste, HIGH);
delay(500);
digitalWrite(brankahoste, LOW);
delay(500);
digitalWrite(brankahoste, HIGH);
delay(500¨;
}
else {
digitalWrite(brankahoste, LOW);
}

golhoste2 = digitalRead(senzorhoste2);
if (golhoste2 == LOW) {
digitalWrite(brankahoste, HIGH);
delay(500);
digitalWrite(brankahoste, LOW);
delay(500);
digitalWrite(brankahoste, HIGH);
delay(500);
digitalWrite(brankahoste, LOW);
delay(500);
digitalWrite(brankahoste, HIGH);
delay(500¨;
}
else {
digitalWrite(brankahoste, LOW);
}
}
Pak jsem z toho popisu nějak vůbec nepochopil, co by to mělo dělat a co to nedělá. Zkus to popsat trochu srozumitelněji, snad se pak najde nějaké řešení.

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: IR senzory, LED matice a červené LED diody, prosím o pomoc.

Příspěvek od pavel1tu » 15 kvě 2020, 07:31

Já mu rozumím o co jde.
- senzor někde za brankou
- počítání golu asi na LED maticový displej
- blikání LED za brankou

Jakou matici máš - tedy kolik jich je - 2 ?
Bylo by dobré přímo napsat odkaz na knihovnu - zrovna Ledkontrol má tolik kopií a mnoho s dost blbými chybami.

PS: kod na ty LED segmentovky bych použil z nějakého funkčního projektu, nebo příkladu v knihovně pro Ledkontrol (budík, minutka, hodiny), hlavně zobrazování, zdroj dat pro čísla atd. většinou to mají jako funkci, tak to půjde jednoduše použít.
Pro inspiraci :
https://xantorohara.github.io/led-matrix-editor/
https://github.com/mylms/Arduino-Matrix-Clock
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

jandafilip
Příspěvky: 7
Registrován: 14 kvě 2020, 11:43
Reputation: 0

Re: IR senzory, LED matice a červené LED diody, prosím o pomoc.

Příspěvek od jandafilip » 15 kvě 2020, 07:43

Děkuji moc za odpovědi, přesně jak říká pan Pavel. LedControl jsem stahoval odtud z článku https://navody.arduino-shop.cz/navody-k ... atice.html a jesna se o dvě matice nezávislé na sobě https://arduino-shop.cz/arduino/850-ard ... atice.html

Děkuji moc

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: IR senzory, LED matice a červené LED diody, prosím o pomoc.

Příspěvek od pavel1tu » 15 kvě 2020, 18:19

No, koukal jsem na tvůj program,
LEDmatrix tam sice máš nějak definovaný, ale nenecháváš vykrestil tu "1"

Knihovnu raději smaž a naimportuj si tuto - http://wayoda.github.io/LedControl/
Nebo pokud to jde, stačí update ...

Začni s jedným LEDmatrix, udělej si program který ti bude po aktivaci čidla "golu" zvedat čísla 0-1-2-3
Popřípadě nulování tlačítkem.



Tady máš příklad z odkazu co jsem psal pro vytváření "fontu", nevím jestli bude fungovat, ale měl by měnit číslice 0-1-2 po 500ms.
V programu je jasně vidět část kde jsou v čísla 0-1-2 a jak se po 500ms volají "displayImage(IMAGES);" a zobrazují dokola.
Takže když i=0 zobrazí se 0 atd ....
Tento program jen zobrazí automaticky všechny znaky vložené do pole "IMAGES[]"



Kód: Vybrat vše

#include <LedControl.h>

const int DIN_PIN = 7;
const int CS_PIN = 6;
const int CLK_PIN = 5;

const uint64_t IMAGES[] = {
  0x183c666666663c18,       //0
  0x30303030303c3830,       //1
  0x3e3e0c1830363e1c        //2
};
const int IMAGES_LEN = sizeof(IMAGES)/8;


LedControl display = LedControl(DIN_PIN, CLK_PIN, CS_PIN);


void setup() {
  display.clearDisplay(0);
  display.shutdown(0, false);
  display.setIntensity(0, 10);
}

void displayImage(uint64_t image) {
  for (int i = 0; i < 8; i++) {
    byte row = (image >> i * 8) & 0xFF;
    for (int j = 0; j < 8; j++) {
      display.setLed(0, i, j, bitRead(row, j));
    }
  }
}

int i = 0;

void loop() {
  displayImage(IMAGES[i]);
  if (++i >= IMAGES_LEN ) {
    i = 0;
  }
  delay(500);
}
Až zvládneš 1 LEGmatrix, rozchoď podobně druhý a takto postupuj ....
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: IR senzory, LED matice a červené LED diody, prosím o pomoc.

Příspěvek od pavel1tu » 15 kvě 2020, 19:17

Na blikaní LED se zatím vykašli,
asi moc neprogramuješ, děcka na kroužku používají knihovnu jled.h
https://github.com/jandelgado/jled

Kód: Vybrat vše

#include <jled.h>

// blink internal LED every second; 1 second on, 0.5 second off.
auto ledDomaci = JLed(6).Blink(500, 100).Repeat(5);  // 500ms cykus, 100ms sviti, zopakuje 5x

void setup() { }

void loop() {
  ledDomaci.Update();  //tento radek spusti to blikani
}
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

jandafilip
Příspěvky: 7
Registrován: 14 kvě 2020, 11:43
Reputation: 0

Re: IR senzory, LED matice a červené LED diody, prosím o pomoc.

Příspěvek od jandafilip » 16 kvě 2020, 09:18

Děkuji moc za odpovědi, dnes to zkusím nějak rozchodit a dám vědět co z toho vypadlo.

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: IR senzory, LED matice a červené LED diody, prosím o pomoc.

Příspěvek od pavel1tu » 16 kvě 2020, 15:09

jandafilip píše:
16 kvě 2020, 09:18
Děkuji moc za odpovědi, dnes to zkusím nějak rozchodit a dám vědět co z toho vypadlo.
Když ti to nepůjde, hoď sem kod.
Mrkneme na to - na příští víkend už budu mít doma pár těch kostiček 8x8LED, tak mohu testovat.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 14 hostů