Stránka 1 z 1

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

Napsal: 14 kvě 2020, 16:08
od jandafilip
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);
}
}

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

Napsal: 15 kvě 2020, 06:59
od ondraN
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í.

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

Napsal: 15 kvě 2020, 07:31
od pavel1tu
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

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

Napsal: 15 kvě 2020, 07:43
od jandafilip
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

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

Napsal: 15 kvě 2020, 18:19
od pavel1tu
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 ....

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

Napsal: 15 kvě 2020, 19:17
od pavel1tu
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
}

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

Napsal: 16 kvě 2020, 09:18
od jandafilip
Děkuji moc za odpovědi, dnes to zkusím nějak rozchodit a dám vědět co z toho vypadlo.

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

Napsal: 16 kvě 2020, 15:09
od pavel1tu
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.