HobbyCNC fórum
FTP tárhely: http://cnctar.hobbycnc.hu v0.9.6 Régi HobbyCNC oldal: http://archiv.hobbycnc.hu

Új regisztráció / Átregisztráció a régi fórumról
    
   


Arduino



 

Időrend:
Oldal 1 / 42 Ugrás ide:
Sorok:
1  2  3  4  5   Következő ►  Utolsó ►|

  Fórum főoldal  |  A lap aljára

Aknai Gábor | 3125    2024-12-30 08:52:07 [2061]

Köszi mindenkinek, különösen Frob kollégának a sok segítséget a témában.

Úgy tűnik, hogy az RX nem megy a nextion-ön, kénytelen leszek újat venni.
Persze attól még tesztelésre ok, SD kártyával fel tudok rá tölteni különböző projekteket, csak éppen Arduino-val már nem fog működni, mivel az RX csatornának annyi.

üdv, Gábor


simpi | 4    2024-12-28 15:05:32 [2060]

Régen Nextionoztam, de nekem úgy rémlik, hogy a távirat végén kell küldeni 3-szor dec255-öt(vagy 3x hexa 0xFF).

Előzmény: frob, 2024-12-28 12:07:05 [2058]


Aknai Gábor | 3125    2024-12-28 13:26:41 [2059]

köszi, de így sem írja ki a szöveget, na majd ebéd után írok privátot

Előzmény: frob, 2024-12-28 12:07:05 [2058]


frob | 2303    2024-12-28 12:07:05 [2058]

Bocs, szófosásom van :D

ez ha nyomkodod a reset-et akkor egyszer kiküldi a signal lost szöveget
és meg is jelenik
üres lapot létrehozol a nextion ban, feldobsz egy szövegmezőt, adsz neki valami fontot, utána ardura fel a kód, majd összedug a kettő, amikor nyomsz resetet kiírja...

int egyszer=0;

void setup() {
Serial.begin(9600); // Soros monitor inicializálása

}
void loop() {
if ( egyszer ==0)
{
sendtostring(String("t0.txt=") + String("\"") + String("Signal Lost") + String("\""));
egyszer=egyszer+1;
}
}

void sendtostring(String str) { //a string küldése után 3 db 255 küldése nextionnak
Serial.print(str);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}

Előzmény: Aknai Gábor, 2024-12-28 11:01:32 [2053]


frob | 2303    2024-12-28 11:44:04 [2057]

közben néztem a az előző kódodat, felejtsd el a nextion.h libet
nem kell, mert ha azt használod, minden bizonnyal teljesen másképp kell meghívni mint ahogy én mondtam.

nem kell semmi várakozás sehova, írod olvasod...
amit írtam példát próbáld ki
csak baudrate legyen jó mindkét oldalt, és ha nincs messze egymástól a két eszköz told fel 115,2k-ra

menni fog!

nem annyira agysebészet a nextion, hogy kelljen hozzá lib...

Előzmény: Aknai Gábor, 2024-12-28 11:01:32 [2053]

frob | 2303    2024-12-28 11:39:05 [2056]

ha esetleg átküldöd magánba vagy ide felrakod a teszt kódodat ránézek... van nextion is mellettem, ardu is, ki is próbálom...

Előzmény: Aknai Gábor, 2024-12-28 11:01:32 [2053]


Aknai Gábor | 3125    2024-12-28 11:38:55 [2055]

Ügyes vagy, nekem egyelőre nem megy.

Na majd a többit privátban, mert attól még szeretném működésre bírni

Előzmény: frob, 2024-12-28 11:37:16 [2054]


frob | 2303    2024-12-28 11:37:16 [2054]

mega328 az az egy sima ardu proci, amit felraktam egy saját panelre, olvas két modbus csatornát, abból kreál két pwm jelet kezeli a nextiont, és és külön kapacitiv touchot olvas be i2c-n
mert az egész nextion egy 6mm -es ragasztott üveg mögött van, hogy ne bassza szét a kezelő, így ügye a rezisztív touch kiesett...

~6-7 éve működik egy építőipari gépen...

szóval ja nem jó

Előzmény: Aknai Gábor, 2024-12-28 11:01:32 [2053]


Aknai Gábor | 3125    2024-12-28 11:01:32 [2053]

Ezt így megeszi az arduino IDE, ha máshogy írom, akkor nem.
Lehet még egy kicsit szórakozok vele, de már kezdem unni a dolgot, szóval valszeg váltás lesz egy komolyabb és kompaktabb Arduino-ra, mert ez a 2 eszköz valahogy nem akar együttműködni.
Ráadásul a nextion egy csomó műveletet nem akar végrehajtani, ez is a váltás mellett érvel.

Az új kiszemelt kombó, az Arduino GIGA R1 WiFi és Arduino GIGA Display Shield.

    

Előzmény: frob, 2024-12-28 09:31:33 [2051]


frob | 2303    2024-12-28 09:37:02 [2052]

amit még tehetsz, hogy tényleg a oda vissza soros-t lásd
usb TTL rs232 átalakító ftdi vagy cp vagy valami kínai..

RX lábat 1-1- diódán keresztül rákötöd a soros RX TX re
így az oda vissza közlekedőt látod terminálban, nem pedig egy külön kiíratva, ami sokszor baromira nem ugyan az mint ami egyébként kimegy
diódák leválasztják egymástól a két vonalat így nincs kavarodás, de mindent látsz..

Előzmény: frob, 2024-12-28 09:31:33 [2051]


frob | 2303    2024-12-28 09:31:33 [2051]

a \ jelet külön add hozzá "\"" így az elején és a végén

Előzmény: Aknai Gábor, 2024-12-28 09:15:19 [2050]


Aknai Gábor | 3125    2024-12-28 09:15:19 [2050]

Na szóval folytatva a másik topikban nyitott beszélgetést, hogy az a nyamvadt Nextion kijelző végre azt csinálja amit az Arduino mond neki.

#include <Nextion.h>

// Serial1 port a Nextion kijelző kommunikációjához
#define nexSerial Serial1

void setup() {
Serial.begin(9600); // Soros monitor inicializálása
nexSerial.begin(9600); // Nextion kommunikáció (Serial1)
Serial.println("Nextion inicializálva a Serial1-en.");

// Küldj egy teszt parancsot a kijelzőnek
sendTextToNextion("t_status", "Arduino teszt szöveg");

// Várjunk egy kicsit, majd ellenőrizzük a kijelző válaszát
delay(500);
checkNextionResponse();
}

void loop() {
// Ebben a tesztben nincs szükség folyamatos eseményekre
}

// Parancs küldése a Nextion kijelző komponensének
void sendTextToNextion(String component, String text) {
String command = component + ".txt=\"" + text + "\"";
nexSerial.print(command); // Küldi a parancsot a kijelzőnek
nexSerial.write(0xFF); // Parancs lezárása
nexSerial.write(0xFF);
nexSerial.write(0xFF);

// Debug kiírás a soros monitorra
Serial.print("Küldött parancs: ");
Serial.println(command);
}

// Kijelző válaszainak ellenőrzése
void checkNextionResponse() {
Serial.println("Kijelző válasz ellenőrzése...");
while (nexSerial.available()) {
Serial.print("Kijelző válasz: ");
Serial.println(nexSerial.read(), HEX);
}
}




Itt most csak a tesztszöveget próbálnám kiíratni az adott text ablakba, de nem csinál semmit a nextion a fizikai kijelzőn.
Viszont a nextion debuggerében frankón kiírja ha manuálisan írom be a parancsot.

  


morvfer7 | 2566    2024-12-25 20:27:29 [2049]

bocsi, nem írtad meg, hanem UNO-ra fordítottad le a programot. este van...

Előzmény: morvfer7, 2024-12-25 20:25:45 [2048]


morvfer7 | 2566    2024-12-25 20:25:45 [2048]

ha UNO-ként írtad meg a programot, akkor UNO lábkiosztás szerint fogja csinálni. Ha csak mint chipet külön akarod használni, akkor a programban saját magad döntöd el, hogy melyik lábnak mi lesz a funkciója.

Előzmény: szf, 2024-12-25 19:27:33 [2047]


szf | 4439    2024-12-25 19:27:33 [2047]

A feltöltéssel nincs gond.
Az a kérdés, ha a kopasz atmegán a 22-es és a 23-as lábat akarom használni akkor az arduino ide programba minek deklaráljam?

Előzmény: morvfer7, 2024-12-25 19:17:14 [2046]

morvfer7 | 2566    2024-12-25 19:17:14 [2046]

A kolloid készülékeken így töltöm fel a tartalmat, mert amikor elszálltak az arduino modulok árai és sikerült vásárolnom panelokat, amiken ATmegák voltak, kedvezőbb lett az ár.
Mellékelt képen a lábak, amin keresztül töltöm fel a programot.

Nem kell módosítani a pineket a kódban, mert az Arduino IDE elvégzi ezt.
A feltöltéshez válaszd az "Arduino as ISP" módot, persze előtte az UNO-ra töltsd rá a példákból az ArduinoISP-t. Állítsd be az ATmega328-at a feltöltéshez.

Program feltöltése az ISP bekötés szerint:
MOSI - UNO Pin 11 → ATmega Pin 17
MISO - UNO Pin 12 → ATmega Pin 18
SCK - UNO Pin 13 → ATmega Pin 19
RESET - UNO Pin 10 → ATmega Pin 1
GND és VCC +5V bekötése is kell.

Ha nem indulna el a feltöltés, akkor a VCC és RESET láb közé egy 10K ellenállás.

Csak az ATmega feltöltéséhez szükséges a kristály és a két lábán 1-1 22pF kondenzátorral a GND-re.

  

Előzmény: szf, 2024-12-25 18:22:24 [2045]


szf | 4439    2024-12-25 18:22:24 [2045]

Sziasztok!
Abban az esetben , ha egy Arduino UNO alaplapon kereszesztül (MISI-MOSI bekötéssel) töltöm fel a programot egy kopasz Atmega328-ra akkor a pineket hogyan kell deklarálni ? Ami az UNO-n 10,8,11,1,A0,A1,A2,A3 az mielőtt betöltöm az atmegában módosítanom kell valami másra?
Az eredeti program is UNO-ra készült.
Feltöltéskor UNO-t vagy Atmega328-at válasszam ki?
Köszönöm a segítséget!


szf | 4439    2024-12-25 18:15:48 [2044]

Előzmény: morvfer7, 2024-12-24 23:41:16 [2041]


PSoft | 18614    2024-12-25 08:56:45 [2043]

Előzmény: morvfer7, 2024-12-24 23:41:16 [2041]


svejk | 33073    2024-12-25 08:47:24 [2042]

Előzmény: morvfer7, 2024-12-24 23:41:16 [2041]


morvfer7 | 2566    2024-12-24 23:41:16 [2041]

Boldog Karácsonyt mindenkinek!

Így karácsonykor kicsit megállt az élet, sokan a TV előtt, sokan filmeket néznek, nekem már elegem lett belőle és gondoltam most lesz időm megcsinálni amit már rég szerettem volna.

Pár hónapja vettem színes 8x8 ws2812B led mátrixot, amivel egy szivárvány színben meg lehet jeleníteni a pontos időt, dátumot, esetleg kiegészítve hőérzékelő szenzorral, még a hőmérsékletet és páratartalmat is.

Hogy olcsó és pontos legyen az óra, így a jól megszokott NTP szerveres megoldást választottam egy Arduino D1 minivel, de akár kiegészíthető óra modullal is, ha szükséges.

Már 1 darab 8x8 mátrix modullal is jó szerintem, de a jövőben még veszek hozzá és akkor bővítem 40x8 mátrixra.

Ha valaki szeretné megépíteni itt közzé teszem a kódot hozzá, most karácsony alkalmával volt időm összehozni..

// 2024-12-24
// NTP óra wifi managerrel, hh:mm:ss kijelzéssel, D1 mini valamint egy 8x8 WS2812B led mátrix kijelzőn
// Minden egész percben megjeleníti a dátumot is. dd/mm/yyyy formátumban.
// Ha az idő másodperce kisebb mint 7, akkor a dátumot jelenítjük meg, egyébként az időt.
// 8x8 WS2812B mátrix kijelző - D1 mini bekötése - V+-5V, V--GND, IN-D3

#include <ESP8266WiFi.h>
#include <WiFiManager.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_GFX.h>

// NTP beállítások
const long utcOffsetInSeconds = 3600; // UTC+1
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds);

// WS2812B mátrix beállítása
#define PIN D3 // A D1 mini D3 pinje a vezérléshez
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(
8, 8, PIN,
NEO_MATRIX_TOP + NEO_MATRIX_RIGHT + NEO_MATRIX_COLUMNS,
NEO_GRB + NEO_KHZ800
);

void setup() {
Serial.begin(115200);

// WiFi Manager inicializálása
WiFiManager wifiManager;
wifiManager.autoConnect("8x8_Clock");

// NTP kliens indítása
timeClient.begin();
timeClient.setTimeOffset(utcOffsetInSeconds);

// WS2812B mátrix inicializálása
matrix.begin();
matrix.setTextWrap(false); // Nincs automatikus sortörés
matrix.setTextSize(1); // Kisebb betűméret
matrix.setBrightness(20); // Halványabb fényerő (20-as érték)

// LED teszt lefuttatása
ledTest();

// Az idő folyamatos frissítése
timeClient.update();
}

void loop() {
timeClient.update(); // Frissítjük az időt

int second = timeClient.getSeconds(); // Másodperc lekérdezése
if (second < 7) {
displayDate(); // Ha másodperc < 7, dátumot jelenít meg
} else {
displayTime(); // Egyébként az időt
}
}

// LED teszt: Egyesével kapcsolja be a LED-eket szivárvány színnel
void ledTest() {
matrix.clear();
for (int i = 0; i < matrix.width() * matrix.height(); i++) { // 64 LED esetén (8x8 mátrix)
int x = i % matrix.width(); // Oszlop koordináta
int y = i / matrix.width(); // Sor koordináta
matrix.drawPixel(x, y, ColorWheel((i * 4) & 255)); // Szivárvány szín kiszámítása
matrix.show();
delay(100); // 100ms késleltetés minden LED bekapcsolása között
}
delay(1000); // Várakozás a teszt után
matrix.clear(); // LED mátrix törlése a teszt végén
matrix.show();
}

void displayTime() {
String timeString = timeClient.getFormattedTime();
matrix.clear();

for (int i = 0; i < timeString.length() * 6 + matrix.width(); i++) {
matrix.clear();
for (int j = 0; j < timeString.length(); j++) {
int x = matrix.width() - i + j * 6; // A karakterek mozgásának számítása
if (x < matrix.width()) {
matrix.setCursor(x, 0);
matrix.setTextColor(ColorWheel((i + j * 20) & 255)); // Szivárvány szín beállítása
matrix.print(timeString.charAt(j));
}
}
matrix.show();
delay(100); // Sebesség beállítása
}
}

void displayDate() {
// Az aktuális dátumot az NTP kliens időbélyegéből képezzük
time_t rawTime = timeClient.getEpochTime(); // UNIX időbélyeg
struct tm* timeInfo = localtime(&rawTime);

// Dátum formázása
String dateString = String(timeInfo->tm_mday) + "/" +
String(timeInfo->tm_mon + 1) + "/" +
String(timeInfo->tm_year + 1900);

matrix.clear();
for (int i = 0; i < dateString.length() * 6 + matrix.width(); i++) {
matrix.clear();
for (int j = 0; j < dateString.length(); j++) {
int x = matrix.width() - i + j * 6; // A karakterek mozgásának számítása
if (x < matrix.width()) {
matrix.setCursor(x, 0);
matrix.setTextColor(ColorWheel((i + j * 20) & 255)); // Szivárvány szín beállítása
matrix.print(dateString.charAt(j));
}
}
matrix.show();
delay(100); // Sebesség beállítása
}
}

uint32_t ColorWheel(byte pos) {
// Szivárvány színek generálása
if (pos < 85) {
return matrix.Color(pos * 3, 255 - pos * 3, 0);
} else if (pos < 170) {
pos -= 85;
return matrix.Color(255 - pos * 3, 0, pos * 3);
} else {
pos -= 170;
return matrix.Color(0, pos * 3, 255 - pos * 3);
}
}





Sajnos a videó nem adja vissza a valódi élményt, mivel a telefon kamerájával vettem fel és nagyon lerontja a színeket.




    


metabo6000 | 34    2024-12-22 15:13:06 [2040]

Helló
Ott én is küzdöttem vele (AI) de zagyvaság jött ki a mipy fordításkor elakadt mindig!
Köszönöm hogy megnézted!

Előzmény: robicnc, 2024-12-22 09:49:43 [2038]


robicnc | 89    2024-12-22 10:06:57 [2039]

ha soros rész vacackolna.

import sys
from machine import UART

# Beállítja az UART1-et 115200 baud sebességgel
uart = UART(1, baudrate=115200)

# Rendelje hozzá a UART objektumot a sys.stdout és sys.stdin helyére
sys.stdout = uart
sys.stdin = uart


Előzmény: robicnc, 2024-12-22 09:49:43 [2038]


robicnc | 89    2024-12-22 09:49:43 [2038]

Nem volt időm, de ezt nézd meg. (Így lusta ember fegyvere AI)

from machine import Pin
from micropython import const
import time

CLOCK_PIN = const(26)
DATA_PIN = const(25)

BUFFER_SIZE = const(23)
DATA_PERIOD_MS = const(80)

buff = [0] * BUFFER_SIZE

bitPos = 0
lastPeriodMs = 0

def clk_isr(pin):
global bitPos, lastPeriodMs
ms = time.ticks_ms()

if time.ticks_diff(ms, lastPeriodMs) < 0:
lastPeriodMs = ms

if time.ticks_diff(ms, lastPeriodMs) < DATA_PERIOD_MS:
return

if bitPos == BUFFER_SIZE:
bitPos = 0

if bitPos < BUFFER_SIZE:
buff[bitPos] = (DATA_PIN.value())
bitPos += 1

if bitPos == BUFFER_SIZE:
lastPeriodMs = ms

def get_measurement():
sign = -1 if buff[20] == 1 else 1
value = 0

for i in range(BUFFER_SIZE):
if buff[i] == 1:
value |= (1 << i)

return (value * sign) / 100.0

def is_value_available():
return bitPos == BUFFER_SIZE

def setup():
global CLOCK_PIN, DATA_PIN
CLOCK_PIN = Pin(CLOCK_PIN, Pin.IN)
DATA_PIN = Pin(DATA_PIN, Pin.IN)

CLOCK_PIN.irq(trigger=Pin.IRQ_RISING, handler=clk_isr)

setup()
lastMillis = 0

while True:
if is_value_available() and (time.ticks_diff(time.ticks_ms(), lastMillis) > 100):
print(get_measurement())
lastMillis = time.ticks_ms()


Előzmény: metabo6000, 2024-12-03 13:20:09 [2037]


metabo6000 | 34    2024-12-03 13:20:09 [2037]

Hello!
rp2040 MicroPythonra szeretnék egy kódrészletet átírni arduino c++ rol eben van meg a kész rész!
digitális toloméró kiolvasása a cél MicroPythonban de erre nincs találat sehol sajnos!

#include <Arduino.h>

#define CLOCK_PIN 26
#define DATA_PIN 25

#define BUFFER_SIZE 23
#define DATA_PERIOD_MS 80

uint8_t buff[BUFFER_SIZE];

uint8_t bitPos;
unsigned long lastPeriodMs;

void IRAM_ATTR _CLK_ISR() {
unsigned long ms = millis();

if (ms < lastPeriodMs) lastPeriodMs = ms;
if (ms - lastPeriodMs < DATA_PERIOD_MS) return;

if (bitPos == BUFFER_SIZE) bitPos = 0;

if (bitPos < BUFFER_SIZE) {
buff[bitPos++] = (GPIO.in >> DATA_PIN) & 0x1;
}

if (bitPos == BUFFER_SIZE) lastPeriodMs = ms;
}

float getMeasurement() {
int8_t sign;
int16_t value;

sign = buff[20] == 0x1 ? -1 : 1;

for (uint8_t i; i < BUFFER_SIZE; i++) {
if (buff[i] == 0x1) {
value |= 1 << i;
}
}

return (value * sign) / 100.00;
}

bool isValueAvailable() {
return bitPos == BUFFER_SIZE;
}

void setup() {
Serial.begin(115200);

while (!Serial)
;

pinMode(CLOCK_PIN, INPUT);
pinMode(DATA_PIN, INPUT);

attachInterrupt(digitalPinToInterrupt(CLOCK_PIN), _CLK_ISR, RISING);
}

unsigned long lastMillis;

void loop() {
if (isValueAvailable() && (millis() - lastMillis) > 100) {
Serial.println(getMeasurement());
lastMillis = millis();
}
}


frob | 2303    2024-03-28 09:21:53 [2036]

A jövőbeni tervekben sok minden van, talán egyszer majd valami ilyesmi is :D

Előzmény: guliver83, 2024-03-24 22:45:12 [2035]


guliver83 | 3239    2024-03-24 22:45:12 [2035]

Egész jó, meg akarod építeni!

Előzmény: frob, 2024-03-22 08:21:52 [2034]


frob | 2303    2024-03-22 08:21:52 [2034]

Sziasztok
Nem tudom volt e már, de egy érdekes és egész jó projektet találtam.



kézi tekerentyű cnc vezérléshez, kicsit másképp...


Arny | 8    2024-03-19 23:37:31 [2033]

Köszönöm hogy foglalkoztál vele.

Előzmény: dezsoe, 2024-03-18 07:42:22 [2032]


dezsoe | 2934    2024-03-18 07:42:22 [2032]

A zip-nek semmi baja. Csomagold ki valahová, majd találsz benne egy LCD16x2 könyvtárat. Ezt másold be a libraries könyvtáradba. (Nem írtam le külön, de tényleg mókolni kellett vele, mert a zipben nem logikus helyen van.)

Nem biztos, hogy van értelme sok energiát fektetni a program átírásába. (Igaz, továbbra sem néztem még bele, válaszolni is két nap alatt sikerült...) Sok működő és ingyenes ELS projekt van a neten, esetleg érdemes olyanra vadászni, amelyik nem valami speckó alkatrészre épül.

Előzmény: Arny, 2024-03-16 16:48:18 [2031]


Arny | 8    2024-03-16 16:48:18 [2031]

Megoldodott részlegesen probléma. Nem hagyott a dolog nyugodni, egy másik program szerkezete adta az ötletet. Az ino elindítása után kéri, hogy könyvtáron belül legyen, ez rendben, de a többi alkönyvtárt nem hívja meg, kézzel kel bemásolni. Másolás után elindul, problémát az a francos kijelző okozza, mert a gyári zip, biztosan hibás, mert
könyvárba történő meghívása után, azt mondja, nem tartalmaz megfelelő könyvtárat. Másik könyvárral (16x2) elindul, de egy ponton, amikor a gombokat keresi, elakad, mert ebben nincs gomb definiálva. Most már csak az a kérdés honnan lehet hibátlan OLIMEXINO-328-LCD16x2 könyvtárat letölteni, vagy <LiquidCrystal_I2C.h> re átalakítani .
Még egyszer köszönöm a segítő szándékot.

Előzmény: Arny, 2024-03-13 22:43:50 [2028]


svejk | 33073    2024-03-14 14:44:36 [2030]

Előzmény: B.Zoltán, 2024-03-13 23:12:59 [2029]


B.Zoltán | 1721    2024-03-13 23:12:59 [2029]

Nekünk az UNO-s menetvágóban, bár Assemblerben írt programmal, az 1200-as fordulaton az 1000-es encodert le tudja kezelni úgy, hogy közben marad egy kis ideje a kijelzőre is.
Ha jól számolom, akkor ez 80 kHz.
C nyelven nyilván nem tudja ezt a sebességet produkálni.

Előzmény: svejk, 2024-03-13 17:09:06 [2026]


Arny | 8    2024-03-13 22:43:50 [2028]

Köszönöm.

Előzmény: dezsoe, 2024-03-13 17:03:38 [2025]


dezsoe | 2934    2024-03-13 17:20:44 [2027]

Nem mélyedtem el a programban, még felületesen sem. A múltkorában viszont találkoztam egy olyan enkóder könyvtárral, ami állítólag kb. 30 kHz-ig bírja UNO esetében.

Az enkódert általában nem szokás lekérdezni, hanem olyan lábra van bekötve, amelyik tud megszakítást generálni és egy pici de hatékony kód lépteti a számlálót amerre kell. Egy felületesebben megírt változattal 20 kHz környékéig eljutottam pár éve, tehát ha jól van megcsinálva, akkor működhet.

Előzmény: svejk, 2024-03-13 17:09:06 [2026]

svejk | 33073    2024-03-13 17:09:06 [2026]

Tényleg elég hozzá egy UNO?
Ez lekezeli korrekten a 15-20 kHz-es encoder frekit?

Előzmény: dezsoe, 2024-03-13 08:17:18 [2023]


dezsoe | 2934    2024-03-13 17:03:38 [2025]

Hiányzik a ";" a piros előtti sor végéről.

Előzmény: Arny, 2024-03-13 16:41:20 [2024]


Arny | 8    2024-03-13 16:41:20 [2024]

Köszönöm, hogy foglalkoztál a kéréssel.

Bemásoltam az általad ajánlottat,legalább tovább megy de a képen látott helyen ismét elakad. Még nem töltöttem lapra csak ellenőrzés módban futtattam. Az Olimexino-val már tegnap próbáltam. Jól láttad LiquidCrystal_I2C lcd(ADDRESS_LCD,16,2); vel próbálom, egyszerűbb mint a sima 16x2.

  

Előzmény: dezsoe, 2024-03-13 08:17:18 [2023]


dezsoe | 2934    2024-03-13 08:17:18 [2023]

A projekt honlapjáról kiderül, hogy UNO-ra készült.

Előzmény: freewind, 2024-03-13 07:32:24 [2021]


dezsoe | 2934    2024-03-13 08:16:27 [2022]

Az LCD, amit használ az itt található. Ha csak nincs ilyen modulod, akkor nem érdemes ezzel küzdeni, mert a modul kezeli a gombokat is meg a képernyőt is egy PIC segítségével. Ugyanezen a lapon megtalálod a keresett library-t is, de van benne egy hiba. Az LCD16x2.cpp-ben az

#include "../Wire/Wire.h"


helyett
#include "Wire.h"


fog lefordulni.

Előzmény: Arny, 2024-03-12 19:25:36 [2020]


freewind | 92    2024-03-13 07:32:24 [2021]

Üdv,
Amennyiben hibaüzenet is bemásoltad volna egyszerűbb lenne. Illetve az sem ártana tudni, hogy mely arduinot használod (uno,mega)
Az LCD-t hogyan hajtod meg?

// LCD
#include <LCD16x2.h>
#include <Wire.h>
LCD16x2 lcd;



részből gondolom hogy I2C-n. Ebben az esetben meg kell adni a I2C címét.

Én ezt használom, példa hozzá:
#include <LiquidCrystal_I2C.h>

#define ADDRESS_LCD 0x27 //LCD cím

LiquidCrystal_I2C lcd(ADDRESS_LCD,16,2); //LCD


void setup()
{
Wire.begin();
lcd.init();
lcd.begin(16, 2);

lcd.backlight();
lcd.home();
lcd.setCursor(0, 0);
lcd.print("Inicializalas...");
lcd.setCursor(0, 1);
lcd.print("Kerem varjon!");
}

Előzmény: Arny, 2024-03-12 19:25:36 [2020]


Arny | 8    2024-03-12 19:25:36 [2020]

Tiszteletem a fórum társaknak. Program cserekerekek kiváltását hivatoot szolgálni, Segítséget szeretnék kérni, program futtatásában. Program LCD hibával tér vissza. Vagy négy különböző könyvtárat is letöltöttem, de egyiket sem fogadja el, zip könyvárba feltelepülnek. Sajnos a programozáshoz nem értek, csak használni tudom, ha hibátlan a program. Segítséget előre is köszönöm.

https://drive.google.com/file/d/1pw_SAhcx0-mBFxDlghivDmekNUzdfhOl/view?usp=sharing


frob | 2303    2024-03-10 18:02:31 [2019]

Csak még annyit, hogy pl olyan tiny-re amivel arduval már nem tudsz semmit, ezzel simán, mivel nem boot loader- en keresztül tolja le hanem a programozó készülék oda veri bele ahonnan a progi indul, tehát a bootloader helyére is tolhatsz progit!

Előzmény: frob, 2024-03-10 17:59:24 [2018]


frob | 2303    2024-03-10 17:59:24 [2018]

Így igaz, még sztem az elsők között voltam amikor megvettem, azóta is frissíti az ember, és nagyon sok atmel procit ismer!

Előzmény: Csuhás, 2024-03-09 17:27:01 [2016]


Robsy1 | 302    2024-03-09 17:43:21 [2017]

Köszönöm, szimpatikus így első ránézésre.

Előzmény: Csuhás, 2024-03-09 17:27:01 [2016]

Csuhás | 6729    2024-03-09 17:27:01 [2016]

Megemlítek neked egy általam használt alternatívát. Van egy olcsó Bascom névre hallgató elég hatékony kódot generáló basic fordító atmelekre. ( Ne egy sorszámozott goto-kal teli kódra gondolj) Magam évek óta használom, pár száz kbyteos forráskódú, szívhang elemző, vagy sok csatornás EEG programokat írtam ezzel. Jól kezeli a procik hw elemeit, illetve az időkritikus részeknél simán lehet ASM-be váltani. Az ingyenes demó verzióval kipróbálható.

Előzmény: Robsy1, 2024-03-09 15:47:45 [2015]


Robsy1 | 302    2024-03-09 15:47:45 [2015]

Biztos úgy van, ahogy mondod, te vagy a szakértője a témának.
Én nem tudom pontosan mennyi van (volt aki jóval száz fölöttiről beszélt a 16 bites verzióknal, mert a 8 biteseket nagyjából még én is átlátom), ezért is érdeklődtem itt. Egy biztos: a korszerűség, kényelem jegyében azt érzékelem, hogy szinte minden programozó manapság "menekül" az AVR ASM programozástól, mindenki valamilyen C fejlesztő rendszert/fordítót javasol, hogy ott kezdejek ezekkel foglalkozni. És azért egy ilyen AT Mega pdf adatlap még terjedelemre is elég "ijesztő", ha megnyitja az ember.

Na majd meglátjuk, majd jobban beleásom magam, aztán ha elakadok, majd jelentkezem. Köszi neked is az infókat.

Előzmény: dezsoe, 2024-03-09 14:53:39 [2014]


dezsoe | 2934    2024-03-09 14:53:39 [2014]

A PIC, az AVR és az ARM processzorok RISC architektúrájúak: nemhogy több ezer, de sokszor még 100 utasításuk sincs.

Előzmény: Robsy1, 2024-03-09 14:39:22 [2013]


Robsy1 | 302    2024-03-09 14:39:22 [2013]

Köszi, de attól félek, hogy ennek a huroknak meg a benne lévő utasítás ciklusoknak az össz eredő végrehajtási ideje nagyobb lesz így már mint 0.5 us.

Lehet, hogy át kéne tanulmányoznom idővel egy 16 bites AVR assembly utasításkészletét. Csak azt a tapasztaltam, akikkel beszélgettem már erről, hogy manapság már szinte senki (a profi programozók se) fejlesztenek ilyen AVR programokat ASM-ben, mert ezek már nem azzal a pár száz (hanem akár több ezer), viszonylag áttekinthető utasításkészlettel dolgoznak, mint egy 8 bites PIC, amiket eddig volt szerencsém programozgatni, és viszonylag átláthatók, megtanulhatók még nekem is, csak ugye "lassúak" nekem. Ez a 16 bites adatkezelésű AVR vagy (akár a PIC világ is) ilyen szinten egy más világ, nyilván a profi programozó se fog kínlódni manapság ASM-ben, inkább egy jó minőségű C fordítót használnak, ha még beleférnek a szűkös futási idő keretbe.

De valami trükje, csínja-bínja csak van ennek az AVR technikának, hiszen egy kis "vacak" Ardunió csak-csak elvezérelget egy 3D nyomtatót, néhány 10 kHz-es step/dir frekivel, ami azért nem annyira rossz eredő eredmény egy ilyen kis "kütyühöz" képest.

Na mindegy, köszi mindenkinek a segítséget.

Előzmény: TBS-TEAM, 2024-03-09 13:44:40 [2012]


TBS-TEAM | 2867    2024-03-09 13:44:40 [2012]

Ha minimum 16 bitre van szükséged, de egy kritikus (gyors) kódszakaszban szeretnéd használni, akkor az int_fast16_t definíciókat használhatod.


16 bites mesterkód

#include <Wire.h>

void setup()
{
Wire.begin();
Serial.begin(9600);
}

void loop()
{
delay(2000);

int16_t bigNum;

byte a,b;
Wire.requestFrom(54,2);

a = Wire.read();
b = Wire.read();

smallNum = a;
smallNum = smallNum << 8 | b;

Serial.print(bigNum);
Serial.print("\n");
}

____________________________________________

16 bit slave code

#include <Wire.h>

void setup()
{
Wire.begin(54);
Wire.onRequest(requestEvent);
}

void loop()
{
delay(100);
}

void requestEvent()
{
int16_t bigNum = 1234;
byte myArray[2];

myArray[0] = (bigNum >> 8) &amp; 0xFF;
myArray[1] = bigNum & 0xFF;
Wire.write(myArray, 2);
}



  


  Fórum főoldal  |  A lap tetejére

Időrend:
Oldal 1 / 42 Ugrás ide:
Sorok:
1  2  3  4  5   Következő ►  Utolsó ►|


 ◊ 
[ 0.9318 ]