- DIGI internet
- Kínában túl sok az EV, fokozódik az árháború
- Mobilinternet
- Az MSI RadiX AXE6600 tesztje – router, játékosoknak
- Hálózati / IP kamera
- 3 évig még biztosan nem rendelhetünk Xiaomi EV-t
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- HBO Max & OD topic
- Milyen program, ami...?
- Aliexpress tapasztalatok
-
IT café
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
-
Flashback
addikt
Köszönöm mindkettőtöknek!
Bocs nincs hosszú ö, ü és néha az á is ä :)
-
Pubszon
veterán
Üdv.
Van egy shift register modulom, konkrétan ez.Az alábbi probléma van vele.
HIGH-ra hibátlanul kapcsol, viszont LOW-ra mindig hibásan.
Az utolsó kettőt mindig egyszerre kapcsolja, de van hogy másik kettőt is egyszerre kapcsol LOW-ra.
VIDEO ITT.Kód:
const int SHCP_pin = 12;
const int STCP_pin = 11;
const int DS_pin = 10;
const int shiftoutput = 7;
boolean registers[8];
void setup()
{
pinMode(DS_pin, OUTPUT);
pinMode(STCP_pin, OUTPUT);
pinMode(SHCP_pin, OUTPUT);
}
void loop()
{
delay(1000);
for (int i = shiftoutput; i >= 0; i--)
{
registers[i] = LOW;
writereg();
delay(500);
}
delay(1000);
for (int i = shiftoutput; i >= 0; i--)
{
registers[i] = HIGH;
writereg();
delay(500);
}
}
void writereg()
{
digitalWrite(STCP_pin, LOW);
for (int i = shiftoutput; i >= 0; i--)
{
digitalWrite(SHCP_pin, LOW);
digitalWrite(DS_pin, registers[i] );
digitalWrite(SHCP_pin, HIGH);
}
digitalWrite(STCP_pin, HIGH);
}Mi lehet a hiba? Vagy hardveres?
ASRock X79 Extreme6, i7 4930K, 32GB DDR3, GTX 1080 G1, Corsair RM750x...
-
zka67
őstag
válasz Pubszon #1803 üzenetére
Szia, próbáld meg így:
void setup()
{
pinMode(DS_pin, OUTPUT);
pinMode(STCP_pin, OUTPUT);
pinMode(SHCP_pin, OUTPUT);
digitalWrite(STCP_pin, LOW);
digitalWrite(SHCP_pin, LOW);
}
...
void writereg()
{
digitalWrite(STCP_pin, LOW);
digitalWrite(SHCP_pin, LOW);
for (int i = shiftoutput; i >= 0; i--)
{
digitalWrite(DS_pin, registers[i] );
digitalWrite(SHCP_pin, HIGH);
digitalWrite(SHCP_pin, LOW);
}
digitalWrite(STCP_pin, HIGH);
digitalWrite(STCP_pin, LOW);
} -
Pubszon
veterán
Megpróbálom, köszi, de szerintem hardveres a gond.
Most csináltam egy ilyen modult, azzal hibátlan, úgyhogy szerintem hardveres a gond.Mennem kell vissza dolgozni, de majd kipróbálom.
MOD: Amit én csináltam, azzal jó a kódod, a gyári panellal pedig este próbálom ki!
[ Szerkesztve ]
ASRock X79 Extreme6, i7 4930K, 32GB DDR3, GTX 1080 G1, Corsair RM750x...
-
Pubszon
veterán
-
Saua
tag
Sziasztok,
Ezt a kódot sikerült összeeszkábálni, nyomógombbal és telefonról is lehet kapcsolgatni a LED –et, és a telefonon megjelenik a LED aktuális állapota.
/*
LED attached from pin 12 to ground
pushbutton attached to pin 5 from +5V
10K resistor attached to pin 5 from ground
*/
#include <SoftwareSerial.h>
int bluetoothTx = 2; // TX-O pin of bluetooth mate, Arduino D2
int bluetoothRx = 3; // RX-I pin of bluetooth mate, Arduino D3
int led = 12;
int button = 5;
int dataFromBt;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
// változókat hozunk létre:
int ledState = LOW; // kimeneti pin aktuális állapota
int buttonState; // bemeneti pin aktuális állapota
int lastButtonState = LOW; // bemeneti pin előző értéke
long lastDebounceTime = 0;
long debounceDelay = 50;
void setup()
{
Serial.begin(9600); // Begin the serial monitor at 9600bps
bluetooth.begin(115200); // The Bluetooth Mate defaults to 115200bps
bluetooth.print("$"); // Print three times individually
bluetooth.print("$");
bluetooth.print("$"); // Enter command mode
delay(100); // Short delay, wait for the Mate to send back CMD
bluetooth.println("U,9600,N"); // Temporarily Change the baudrate to 9600, no parity
// 115200 can be too fast at times for NewSoftSerial to relay the data reliably
bluetooth.begin(9600); // Start bluetooth serial at 9600
pinMode(led, OUTPUT);
pinMode(button, INPUT);
digitalWrite(led, ledState);
}
void loop()
{
if(bluetooth.available()) // If the bluetooth sent any characters
{
dataFromBt = bluetooth.read();
if(dataFromBt == '1'){
digitalWrite(led, HIGH);
ledState = HIGH;
}
if(dataFromBt == '0'){
digitalWrite(led, LOW);
ledState = LOW;
}
if(dataFromBt == '3'){
bluetooth.print(ledState);
}
}
int reading = digitalRead(button);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == HIGH) {
ledState = !ledState;
digitalWrite(led, ledState);
}
}
}
lastButtonState = reading;
}Ezt szeretném módosítani, hogy négy LED –et lehessen kapcsolgatni.
Főleg a LED aktuális állapotának a lekérdezésével van a gond (most a telefon 100 miliszekundomonként küldi a 3-as karaktert és visszakapja a 1 vagy 0 karaktert)…nem tudom hogyan küldhetne a többi LED más-más karaktert az állapotokról, mert az állapotuk csak LOW vagy HIGH lehet.
-
Danex
addikt
Autóriasztót és így indításgátlót terveznék csinálni az autóba, szerintetek miket kéne belepakolni?
Én eddig IR mozgásérzékelőt, döntés érzékelőt és egy titkos megoldást a gyújtás relé kapcsolásához.
-
Danex
addikt
Ami a sofőr ülésére lenne irányítva? Az infrás pontatlan/megbízhatatlan lenne?
Meg a távirányítós részt nem építenék bele, hisz a mostani autók gyengéje is ez, hogy a távvezérlőt le tudják olvasni. Szóval a bel térből gondoltam az aktiválást/deaktiválást.
Gondoltam arra, hogy nyitástól számítva 10-15s lenne az ameddig van idő a riasztót kikapcsolni, mielőtt megszólalnának a kűrtök. Ehhez lehet kéne egy rtc modul.
GSM modulra én is gondoltam, majd keresek még hozzá.
-
Pubszon
veterán
Még mindig a shift regiszterrel (továbbiakban SR) bajlódok.
Van 2 projektem az asztalon és a következőt vettem észre:
Az egyik amiben van a SR az vezérel 2 LED-et, egy aktív buzzert és 4 relét.
A másik pedig egy kapunyitó elektronika.
Mind a kettő jó működik, nincsenek egy elektromos körben.
Amikor a kapunyitó 24V-os reléi kapcsolnak, akkor random a másik projekt SR kimenetén össze vissza kapcsolgatja a ledeket, reléket és a buzzert a SR.
A SR építésénél nem használtam sem ellenállást, sem pedig kondenzátort.
Ami biztosnak tűnik, azaz, hogy az USB kábelt ha kihúzom az arduinobol ami a SR-es arduino-t köti össze a géppel, akkor nincs ilyen probléma. (Mint ha egy nagy antenna lenne )
Ebből arra gondolok, hogy valami nagyfrekvenciás zajt szedhet össze az USB kábelen.
Hogy tudom én ezt megszüntetni?
Remélem érthetően fogalmaztam.[ Szerkesztve ]
ASRock X79 Extreme6, i7 4930K, 32GB DDR3, GTX 1080 G1, Corsair RM750x...
-
maestro87
őstag
Sziasztok!
Kicsit off leszek.
Ilyen léptetőmotor meghajtó modulból nincs véletlen valakinek elvétve kettő? Ebay-re nem tudok most várni. Természetesen felárat fizetnék értük.[ Szerkesztve ]
-
gyapo11
őstag
A távirányító elég könnyen törhetetlenné tehető, OTP-vel. Nem, nem a bankkal.
Fogni kell egy pro minit, egy nagyobb flasht, és teletölteni véletlenszámokkal, ugyanezt az autóba is, és szép sorban használni a byte-okat. Ha zavarják a vételt, akkor a vevő a kapott kódot keresi előrefelé x db-ig, mondjuk 10-ig. Mivel a számok között _semmi_ összefüggés nincs, nem lehet kiszámolni a következőt meg egyáltalán egyiket se. Annak a valószínűsége, hogy véletlenül eltalálja a következő 10 kód egyikét attól függ, milyen hosszú a kód. Ha mondjuk 2 byte, akkor már 1 a 65536-hoz, ha 3 byte, akkor 1 a 16 millióhoz.
Ha pedig nincs a következő 10 között a kapott kód, akkor 3-at kell beolvasni, és egymás mellett levő 3-at kell kapni.
A lehallgatást el lehet kerülni fénnyel, üvegen belül a vevő, kívülről meg rányomni az adót, azt scannelje le úgy, hogy nem veszem észre.
És ha már közel megyek, akkor az rfid is szóbajöhet, nem tudom autóüvegen át is működik-e.menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
-
JozsBiker
aktív tag
Szia !
Azért nem értem a kérdésed, mert ha egy ilyen programot sikerült összehoznod ( amihez nyilván kellett a telefon oldali rész is, ami szintén nem annyira egyszerű ), akkor miért nem tudod könnyűszerrel átírni több LEDesre :-)
Első közelítésben az jutott eszembe, hogy az adatcsere legkisebb egysége a byte, aminek ugye 256 különböző állapota lehet, tehát bőven el lehet benne kódolni 4 LED állapotát.
Vagy ha mégsem, akkor egymás után küldözgetni. Van egy elválasztó karakter, pl. * , utána szépen sorban küldöd a 4 LED állapotát. Olvasáskor a * -ból tudod hol tartasz.Épp nemrég fejeztem be egy "projektet", ami 64 db LED -det vezérel Androidról. Igaz, itt csak egyirányú a kommunikáció. Ennél úgy oldottam meg, hogy minden kigyújtásnál ill. oltásnál el van küldve a LED sorszáma, és egy + vagy - karakter attól függően hogy kigyújtani v. eloltani kell-e.
Tökre ugyanaz lett, mint ebben a videóban :
-
-
Saua
tag
válasz JozsBiker #1816 üzenetére
Szia,
Az androidos rész az Appinventorral készült, a használata nagyon egyszerü, nem kell hozzá programozói tudás. Az arduinós kód pedig mint egy legó lett összerakva egy tipikus nyomógombos példaprogramból (először bekapcsolja, majd második megnyomásnál kikapcsolja a LED-et, pergésmentesítést is használ) meg egy LED ki-be kapcsolgató kódbol.
De ha már négy nyomógombrol plusz a telefonrol jövő karaterekrő van szó, gondolom már tömböt kellene használni....az meg már más tudásszint[ Szerkesztve ]
-
tvamos
nagyúr
válasz Pubszon #1819 üzenetére
Ezt én értem. Nekem is volt ilyen gondom régen. Én kidobtam az összes shift regisztett a retekbe. Elavult technológia.
Tegyél kisebb értékű felhúzó ellenállásokat! Az szerintem segíteni fog valamelyest. Ha ront a dolgon, akkor meg legalább tudjuk, hogy földlelési, vagy táp gondod van.[ Szerkesztve ]
"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János
-
Imy
veterán
Most ismerkedek az arduinóval, de nem akar összejönni a következő program részlet. A lényeg hogy a nyomógomboknak a 13-as kimenetet kellene működtetni,. Ha megnyomom bekapcsol, ha megnyomom még egyszer kikapcsol.
Vizsgálni akarom, ha be van kapcsolva akkor lehessen kikapcsolni... De nem megy.#include "LiquidCrystal.h"
// A LiquidCrystal eljarast hasznaljukLiquidCrystal lcd(5, 4, 0, 1, 2, 3);
// Az LCD bekotese labak szerint:
// RS(D5), E(D4), D4(D0) ,D5(D1), D6(D2), D7(D3)//PIN0 LCD D4
//PIN1 LCD D5
//PIN2 LCD D6
//PIN3 LCD D7
//PIN4 LCD E
//PIN5 LCD RS
int NYOMOGOMB = 6; //PIN6
//PIN7
//PIN8
//PIN9
//PIN10
//PIN11
//PIN12
int LED = 13;void setup() {
lcd.begin(16, 2); //Az LCD 2 sor, 16 oszlopos
lcd.print("Nyomogomb:"); //
lcd.setCursor(10, 0); //
lcd.print("KI"); //pinMode(NYOMOGOMB, INPUT); //PIN6 nyomogomb bemenet
pinMode(LED, OUTPUT); //PIN13 LED meghajtásint KiAll_13; //13. kimenet állapotát figyeljük
KiAll_13 = 0; // alapértelmezés beállításadigitalWrite((LED), LOW); //LED kikapcsolva alapértelmezettként
}void loop()
{
nyomogomb_BE();
nyomogomb_KI();}
void nyomogomb_BE()
{
if (digitalRead(NYOMOGOMB) == LOW)
delay(20); // prell elkerülése
{
if (digitalRead(NYOMOGOMB) == LOW){
digitalWrite((LED), HIGH);
int KiAll_13 = 1;
}
}
}void nyomogomb_KI()
{
if (KiAll_13 == 1)
{
if (digitalRead(NYOMOGOMB) == LOW)
delay(20); // prell elkerülése
{
if (digitalRead(NYOMOGOMB) == LOW)
{
digitalWrite((LED), LOW);
int KiAll_13 = 2;
}
}
}
}sketch_oct18a.ino: In function 'void nyomogomb_KI()':
sketch_oct18a:64: error: 'KiAll_13' was not declared in this scope
'KiAll_13' was not declared in this scope -
gyapo11
őstag
A while feltétele 1, ami igaz, vagyis örökké fog futni.
curr = digitalRead(NYOMOGOMB);
beírja a curr változóba a gomb állapotát.
if ((curr == 0) && (prev != 0)) {
Mivel prev=1, vagyis igaz, hogy nem 0, csak akkor igaz az if feltétele, ha curr=0. Vagyis amíg curr=1, addig nem történik változás, az if nem fut le,
prev = curr;
prevbe beírja a curr-t, vagyis 1-et, vár 100 msecet, és újra kezdi a while-t.Egyszer megváltozik a gomb állapota, és a curr-ba 0 kerül. Ekkor az if feltétele már igaz lesz, mert curr=0 és prev nem 0.
state ^= 1;
A ^ jel a bitwise xor, vagyis 1-gyel xorolja a biteket, aminek következtében ami 0 volt az 1 lesz, ami 1 volt az 0 lesz. A state eddig 0 volt, vagyis most 1 lesz.
digitalWrite(LED, state);
Vagyis a LED pinbe 1-et ír, a led világítani kezd.
prev = curr;
A prevbe 0 kerül, innen már tudjuk, hogy az if nem fog lefutni, mert a prev nem 0 feltétel nem teljesül, egészen addig, amíg a nyomógomb állapota ismét nem változik és válik 1-gyé.
delay(100);
Ez a pergésmentesítés miatt kell, hogy a nyomógomb lenyomásakor és felengedésekor létrejövő többtucat ki-be kapcsolást figyelmen kívül hagyjuk. Csak az első változást dolgozzuk föl, utána várunk 100 msecet, addig ezek a parazita kapcsolások megszűnnek.[ Szerkesztve ]
menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
-
zka67
őstag
Szia, a működése: a prev változó tárolja a nyomógomb előző állapotát, a state a kimenet aktuális állapotát.
Utána egy végtelen ciklusban beolvassa a curr változóba a nyomógomb aktuális állapotát, majd megnézi, hogy a nyomógomb most le van-e nyomva és az előző állapotban nem volt-e lenyomva, azaz most került-e lenyomásra. Ha igen, megváltoztatja a kimenet állapotát és kiírja azt a portra. A végén minden esetben átkerül az előző állapotba a nyomógomb aktuális állapota, és vár 100ms-et a nyomógomb prell elkerülésére.NYOMÓGOMB ___ _________ _____ ______
\____/ \/\______/ \_/
LED ______________ _______
___/ \______________/
MINTAVÉTEL | | | | | | | | | | | | | | |Szerk: lásd gyapo11 válaszát is
[ Szerkesztve ]
-
gyapo11
őstag
Szinte egyszerre írtuk.
Aztán rájöttem, hogy nem is annyira érthető, az enyém mert hosszú, a tiéd mert rövid.
Vagyis folyamatábra lenne a leginkább követhető.menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
-
tvamos
nagyúr
válasz gyapo11 #1826 üzenetére
Ezt utálom az Arduinoban, nincs ide, meg debug. Ha lenne, akkor lerakna pár breakpointot, és megérthetné magától. Igy csak gányolni tanulnak meg az emberkek, nem programozni. Tisztelet a kivételnek. Mondju... Ő legalább megkérdezte, hogy működik...
"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János
-
Imy
veterán
Erről mi a véleményetek? Magam találtam ki, és működik. Valami hiba esetleg? Jobban szeretem én kitalálni, s szívni vele. persze segítség sosem árt.
De ez nagyon az eleje a végleges programnak.
#include "LiquidCrystal.h"
// A LiquidCrystal eljarast hasznaljukLiquidCrystal lcd(5, 4, 0, 1, 2, 3);
// Az LCD bekotese labak szerint:
// RS(D5), E(D4), D4(D0) ,D5(D1), D6(D2), D7(D3)//PIN0 LCD D4
//PIN1 LCD D5
//PIN2 LCD D6
//PIN3 LCD D7
//PIN4 LCD E
//PIN5 LCD RS
int NYOMOGOMB = 6; //PIN6
//PIN7
//PIN8
//PIN9
//PIN10
//PIN11
//PIN12
int LED = 13;void setup() {
lcd.begin(16, 2); //Az LCD 2 sor, 16 oszlopos
lcd.print("Nyomogomb:"); //
lcd.setCursor(10, 0); //
lcd.print("KI"); // alapértelmezettként ki van kapcsolvapinMode(NYOMOGOMB, INPUT); //PIN6 nyomogomb bemenet
pinMode(LED, OUTPUT); //PIN13 LED meghajtás//int KiAll_13; //13. kimenet állapotát figyeljük
//KiAll_13 = 0; // alapértelmezés beállításadigitalWrite((LED), LOW); //LED kikapcsolva alapértelmezettként
}void loop()
{// Ha LED ki van kapcsolva, akkor be lehet kapcsolni
if (digitalRead(LED) == LOW)
{
if (digitalRead(NYOMOGOMB) == LOW)
delay(20); // prell elkerülése
{
if (digitalRead(NYOMOGOMB) == LOW)
{
digitalWrite((LED), HIGH);
lcd.setCursor(10, 0); //
lcd.print("BE"); // Bekapcsolás kiírás
delay(1000);
}
}
}// Ha LED be van kapcsolva, akkor ki lehet kapcsolni
if (digitalRead(LED) == HIGH)
{
if (digitalRead(NYOMOGOMB) == LOW)
delay(20); // prell elkerülése
{
if (digitalRead(NYOMOGOMB) == LOW)
{
digitalWrite((LED), LOW);
lcd.setCursor(10, 0); //
lcd.print("KI"); // Bekapcsolás kiírás
delay(1000);
}
}
}}
-
Imy
veterán
4 soros LCD-t tudtok ajánlani e-bayről ami jól működik? 2 sorosom van, de kevés lesz, sok információt szeretnék kiírni rá.
-
Saua
tag
Szia,
Én is nagyon kezdő vagyok...de ez a kód valószínüleg nem működik rendesen, rengeteg késleltetés van benne....és ameddig egy-egy delay tart hiába nyomkodod a gombot nem történik semmi. Nem árt kész kódokat is tanulmányozni. Sokmindent már megoldottak, nehezen lehet tökéletesíteni.
[ Szerkesztve ]
-
Imy
veterán
Most nézem, itt 2x16-os LCD-re van írva.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd(0x27,16,2); //set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("b2cqshop");
lcd.setCursor(0, 1);
lcd.print("Voltage: ");
lcd.setCursor(13, 1);
lcd.print("V");
}
void loop()
{
int val;
float temp;
val=analogRead(0);
temp=val/4.092;
val=(int)temp;//
lcd.setCursor(9, 1);
lcd.print(0x30+val/100,BYTE);
lcd.print(0x30+(val%100)/10,BYTE);
lcd.print('.');
lcd.print(0x30+val%10,BYTE);
delay(100);
}Ha ezt a sort átírom, akkor elvileg tudja a 4x20-at?
LiquidCrystal_I2C lcd(0x27,20,4);Kiírás hogyan megy ISP-nél, ugyanúgy mint a hagyományosnál? Pl...
lcd.begin(20, 4); //Az LCD 4 sor, 20 oszlopos
lcd.setCursor(3, 1); //
lcd.print("tESZT:"); // -
Pubszon
veterán
Az ISP-s kiiratásos dolgot nem értem.
A kódot elnézve jó.
Szinte ugyan azok a parancsok, csak I2C-s könyvtár kell hozzá, de nekem is megvan.A fenti kódodban pl az azonos sorokat összevonhatod.
Javitottam a loop részedetvoid loop()
{
// Ha LED ki van kapcsolva, akkor be lehet kapcsolni
if (digitalRead(LED) == LOW)
{
delay(20); // prell elkerülése
digitalWrite((LED), HIGH);
lcd.setCursor(10, 0); //
lcd.print("BE"); // Bekapcsolás kiírás
delay(1000);
}
// Ha LED be van kapcsolva, akkor ki lehet kapcsolni
if (digitalRead(LED) == HIGH)
{
delay(20); // prell elkerülése
digitalWrite((LED), LOW);
lcd.setCursor(10, 0); //
lcd.print("KI"); // Bekapcsolás kiírás
delay(1000);
}
}De ezzal továbbá ahogy már írták, a sok delay megfogja az egészet.
De ha használsz még egy bitet (boolean) akkor azzal kiküszöbölheted ezt és a kijelző se fog másodpercenként frissülni, hanem csak akkor amikor annak kell.
Így:
Az első sor a setup rész elé kell.
boolean ledstate = true;
.
.
.
.
void loop()
{
// Ha LED ki van kapcsolva, akkor be lehet kapcsolni
if ((digitalRead(LED) == LOW) && (ledstate))
{
ledstate = false;
delay(20); // prell elkerülése
digitalWrite((LED), HIGH);
lcd.setCursor(10, 0); //
lcd.print("BE"); // Bekapcsolás kiírás
}
// Ha LED be van kapcsolva, akkor ki lehet kapcsolni
if ((digitalRead(LED) == HIGH) && (!ledstate))
{
ledstate = true;
delay(20); // prell elkerülése
digitalWrite((LED), LOW);
lcd.setCursor(10, 0); //
lcd.print("KI"); // Bekapcsolás kiírás
}
}ASRock X79 Extreme6, i7 4930K, 32GB DDR3, GTX 1080 G1, Corsair RM750x...
-
maestro87
őstag
válasz Pubszon #1833 üzenetére
Nem csak I2C modul jár hozzá? A leírásból és képről én azt veszem le, hogy rá is van forrasztva ez a modul.
A sima 20x4-est én legutóbb, legolcsóbban aliexpressről rendeltem valami 1500Ft-ért.Mellesleg nem tud valaki olyan I2C modult amibe nincs beforrasztva a tüskesor? A múltkorival én eléggé megszenvedtem míg ki tudtam cserélni hüvelysorra.
-
Pubszon
veterán
válasz Pubszon #1838 üzenetére
Az idő lejárt, de módosítottam a kódodat.
#include "LiquidCrystal.h"
// A LiquidCrystal eljarast hasznaljuk
LiquidCrystal lcd(5, 4, 0, 1, 2, 3);
// Az LCD bekotese labak szerint:
// RS(D5), E(D4), D4(D0) ,D5(D1), D6(D2), D7(D3)
//PIN0 LCD D4
//PIN1 LCD D5
//PIN2 LCD D6
//PIN3 LCD D7
//PIN4 LCD E
//PIN5 LCD RS
int NYOMOGOMB = 6; //PIN6
//PIN7
//PIN8
//PIN9
//PIN10
//PIN11
//PIN12
int LED = 13;
boolean ledstate = true;
void setup() {
lcd.begin(16, 2); //Az LCD 2 sor, 16 oszlopos
lcd.print("Nyomogomb:"); //
lcd.setCursor(10, 0); //
lcd.print("KI"); // alapértelmezettként ki van kapcsolva
pinMode(NYOMOGOMB, INPUT); //PIN6 nyomogomb bemenet
pinMode(LED, OUTPUT); //PIN13 LED meghajtás
//int KiAll_13; //13. kimenet állapotát figyeljük
//KiAll_13 = 0; // alapértelmezés beállítása
digitalWrite((LED), LOW); //LED kikapcsolva alapértelmezettként
}
void loop()
{
// Ha LED ki van kapcsolva, akkor be lehet kapcsolni
if ((digitalRead(LED) == LOW) && (digitalRead(NYOMOGOMB) == LOW) && (ledstate))
{
ledstate = false;
delay(20); // prell elkerülése
digitalWrite((LED), HIGH);
lcd.setCursor(10, 0); //
lcd.print("BE"); // Bekapcsolás kiírás
}
// Ha LED be van kapcsolva, akkor ki lehet kapcsolni
if ((digitalRead(LED) == HIGH) && (digitalRead(NYOMOGOMB) == LOW) && (ledstate))
{
ledstate = false;
delay(20); // prell elkerülése
digitalWrite((LED), LOW);
lcd.setCursor(10, 0); //
lcd.print("KI"); // Bekapcsolás kiírás
}
if ((digitalRead(NYOMOGOMB) == HIGH) && (!ledstate))
{
ledstate = true;
}
}ASRock X79 Extreme6, i7 4930K, 32GB DDR3, GTX 1080 G1, Corsair RM750x...
-
Nagytoll
senior tag
Hello! Van egy TM1638-as chipre épülő led mátrixom, most gyakorlom a használatát. Hogy lehetne azt megoldani, hogy megy egy pont a mátrixon és közben gombokkal egy másik pontot tudok irányítani? A lényeg, hogy azonos időben ugyanolyan gyorsan bevegye az inputot, és az önjáró golyó is menjen normálisan. Az alapprogram megvan, csak a delay belassítja, utánaolvastam neten a millis() nevű dolognak, de nem nagyon értem/nem tudom, hogy rakhatnám bele a kódomba, ezen kívül van valami lehetőség ilyen "párhuzamos futtatás" szerűségre?
-
Nagytoll
senior tag
Hello! Megint van egy gondom/kérdésem. van ez a kód :
if ((gx==px) && (gy==py)) {
while(1) {
LED_Matrix.displayPic(picDat0);
if((digitalRead(10)==HIGH) || (digitalRead(11)==HIGH) || (digitalRead(12)==HIGH) || (digitalRead(13)==HIGH)) {
x = TrueRandom.random(0,8); //x,y -> P1
y = TrueRandom.random(0,8);
gx = TrueRandom.random(0,8); //gx, gy ->P3
gy = TrueRandom.random(0,8);
px = TrueRandom.random(0,8); //px, py ->P2
py = TrueRandom.random(0,8);
delay(1000);
LED_Matrix.clear();
break;
};
};
};A lényeg az, hogy megy a mátrixon egy pötty(P1) balról jobbra az egyik sorban, van egy másik pötty(P2) random valahol és van egy harmadik pötty(P3) amit lehet irányítani, ha P1 nekimegy P3-nak akkor rendesen működik ez a kód, mármint egy ugyan ilyen, csak az if feltételében az van, hogy ((gx==x) && (gy==y)). Ha viszont P3 megy neki P1-nek (és ugyanígy P2-nek is, ez igazából a cél, P2 "megszerzése") akkor a program vár a delay szerint 1mp-et és magától újraindul/loop elejére megy. Amit normál esetben csinál(ha P1 megy neki P3-nak) az az, hogy csak akkor megy a loop elejére, ha megnyomom a gombot, aztán vár és break. Szerintetek ez miért van?
[ Szerkesztve ]
-
gyapo11
őstag
válasz Nagytoll #1846 üzenetére
A timer libraryvel elég könnyen lehet delay nélküli időzítéseket csinálni.
menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet
Új hozzászólás Aktív témák
- Kerékpárosok, bringások ide!
- Azonnali VGA-s kérdések órája
- Elemlámpa, zseblámpa
- Vigneau interaktív lokálblogja
- Google Pixel 6/7/8 topik
- DIGI internet
- Ford topik
- Kínában túl sok az EV, fokozódik az árháború
- NVIDIA GeForce RTX 4060 / 4070 S/Ti/TiS (AD104/103)
- Kínai, és egyéb olcsó órák topikja
- További aktív témák...
- ZOTAC GeForce GTX 1080 AMP Edition 8GB GDDR5X 256bit
- Filmes gép gyűjtemény
- Nikon D5000 + AF-S DX NIKKOR 18-105 mm
- Bontatlan Seagate & Western Digital HDD-k 3TB - 12TB -ig - Számla + Garancia, Ár alatt! BeszámítOK!
- DJI Mini 4 pro FMC drón - 3 akku, RC2 táv, 2 táska, Filterek, 2025. decemberig garancia, DJI Care