Az A4(SDA)-A5(SCL) nincs megcserélődve? Tölts le egy I2C scanner programot az uno-ra , lehet hogy a címe nem jól van beéllítva. LiquidCrystal_I2C lcd(0x3F, 16, 2); Itt a 0x3F nem biztos hogy neked is annyi. Azt kell az i2c scannerel megnézni, soros porton kiírja, és azt kell odaírni.
Szia! Szerintem először ellenőrizd, hogy látszik-e az i2c buszon és ha igen, ami a címe. Ezt ajánlom hozzá. Nekem sokat segített, mert a panelre egész más cím volt szitázva...
Guruk! Elkezdtem játszadozni egy UNO-val. Egy 20x4-es kijelzőt kellene életre kelteni I2C-n. 3 órája túrom a netet de nem tudom megoldani. Lehet a bekötés sem jó, és mintaprogi sem akar működni. Nincs benne hiba, rá tudom tölteni az UNO-ra, csak nem jelenik meg semmi a kijelzőn. Ha valaki tud segíteni, és akar is az ne tartsa magában.
Köszönöm.
niethammer | 3
2017-11-26 14:34:02
[805]
A DVD motor egyik tekercsén mértem digitális műszerrel. A betáp 12V PC tápegység. Normál esetben nincs áram, és állandóan léptetni kellett, hogy mérni tudjak. A 100 mA a minimum, mert ez alá nem mehetek, mivel akkor nem emeli fel a tollat. Ez bírja is akármeddig. Gondolom ez PWM szabályozású. A tartóáram ettől függetlenül kb. 0,5 A. Lehet, hogy berakok egy + arduinot, ami tiltja a "Z" kimenetet, ha az XY motor mozog.
Álló helyzetben állítsd be a tartóáramot, illetve lehet nem jól méred, nem biztos hogy valós a mérésed, úgy állítsd be, álló állapotban a motort, hogy ne melegedjen csak kissé, analóg műszerrel lehet jobban mérni, meg amúgy sem tudjuk, hogyan méred mit mérsz, a bemenő táp áramát, ami a tápegység felől megy, vagy az A4988 kimenő tekercs áramát az se mindegy.
Jó lenne szoftveresen megoldani, illetve nem tudom, hogy a "Z" tengely végállás kapcsoló bemenettel lehet-e tiltani a tartóáramot? Azt nem nagyon értem, hogy miért ad ki 4x annyi áramot a tartáshoz, mint a léptetéshez.
Nincs a motor túlhajtva, mert alapvetően ha jól van beállítva, akkor akármeddig is megy nem szabad neki leégni.
Persze ha meg túl van hajtva kisséá erősebb lehet, de ezt akkor pótlólag valahogy kapcsolhatóvá kell tenni, de az alap helyzetben ez az Arduino GRBL lehet nem biztos hogy tudja, illetve csak ki be kapcsolni az EN lábán, de akkor meg nem folyik rajta áram, egyéb megbuherálássel meg léehet oldani plusz elektronikáéval az biztos, de gondolom neked valami szoftver megoldás lenne a kellemes.
Sziasztok! Sikeresen megépítettem 3db DVD léptetőmotorral az első min CNC gépemet. Arduino UNO + Arduino CNC Shield V3.0 + A4988 Az Arduinoban a grbl 0.9j firmware fut.
A sikeren felbuzdulva készítettem egy nagyobb változatot egy scanner, és egy nyomtató mechanikájával. A "Z" tengely maradt DVD mechanika, mert csak egy filctollat kell emelgetni. A DVD motor viszont az első teszt alatt leégett. A következőnél már mértem az áramokat, és azt tapasztalom, hogy a "Z" léptetéskor 100-150 mA áram folyik, és amint vége a léptetésnek nulla. Ettől még nem égne le, de kb. 0,5 A tartóáram folyik állandóan, ha az "X" vagy az "Y" motor megy. Lehet valahogy tiltani a tartóáramot?
Törölt felhasználó
2017-11-17 10:51:41
[800]
Tudja e valaki Teensy 3.0 lehet valami olcsó klonja kinaiaknál más néven ?
Törölt felhasználó
2017-11-16 21:10:30
[799]
usbconfig.h ez a nyilt foráshoz tartozik nem mert látok valami make fájlt bootloader projkt fájl amivel tudsz egyedi bootloader forditani ujra hexbe de a make file milyen program kezelheti avr studio? fix bootloader hexbe már nem tudom cserélni a vid/pid értékjeit mivel az forditot álomány már proci nyelvre?
A firmware mappában van egy usbconfig.h file. Abban keres rá a VID/PID kifejezésre.
Én ezt találtam:
#define USB_CFG_VENDOR_ID 0xD0, 0x16 /* = 0x16d0 */ /* USB vendor ID for the device, low byte first. If you have registered your * own Vendor ID, define it here. Otherwise you may use one of obdev's free * shared VID/PID pairs. Be sure to read USB-IDs-for-free.txt for rules! */ #define USB_CFG_DEVICE_ID 0x53, 0x07 /* = 0x0753 = Digistump */ /* This is the ID of the product, low byte first. It is interpreted in the * scope of the vendor ID. If you have registered your own VID with usb.org * or if you have licensed a PID from somebody else, define it here. Otherwise * you may use one of obdev's free shared VID/PID pairs. See the file * USB-IDs-for-free.txt for details! */
A Vendor ID-nál, és a Device ID-nál lévő paramétereknél neked mi van?
avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "D:\Arduino\hardware\tools\avr/etc/av rdude.conf"
Using Port : COM3 Using Programmer : stk500v1 Overriding Baud Rate : 19200 AVR Part : ATtiny85 Chip Erase delay : 400000 us PAGEL : P00 BS2 : P00 RESET disposition : possible i/o RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail :
avrdude: Device signature = 0x1e930b (probably t85) avrdude: safemode: hfuse reads as DD avrdude: safemode: efuse reads as FE avrdude: NOTE: "flash" memory has been specified, an erase cycle will be perform ed To disable this feature, specify the -D option. avrdude: erasing chip avrdude: reading input file "D:\Arduino\/upgrade-t85_default.hex" avrdude: writing flash (2456 bytes):
szia! tavir bandát hanygolom inkább... én is szortam a fusebites elövéseket de viszaálitani szenvedés 1 programozoval... bár az usb vid/div a botloader tartalmaza ezt nem elég a driver ini átirni szerintem ha több dispark is van egy hubon ne legyen driveres ütközés az egyforma usb azonositokbol...
Szia! Ha nem boldogulsz, kérdezd meg Robit a Tavir.hu-n; nekem van ilyen modulom egy marékkal, semmire nem mentem vele, mert a feltöltött USB-meghajtó program összeakadt a használt MKII és FTDI-s meghajtóval. No, mivel ezektől nem akartam megválni, mert napi használatban vannak, így a kis modulok inkább pihennek. Tehát ha minden jó, de még sem akar menni, akkor lehet, hogy egy előző telepített USB driver-el akad. (már akartam csinálni AVRdoctort, ami alaphelyzetbe visszalövi az ATTINY-ket és akkor lehet ISP-vel programozni, csak az idő ugye...) Szóval RESET láb nélkül nincs ISP, ha USB akad, akkor sincs.
Ott van leírva: <"no reset": external reset disabled, can't program through SPI anymore
Szabad fordításban: "no reset" esetén, soha többet nem tudod SPI-vel programozni.
Ha késöbb SPI-n keresztül akarod programozni - tehát nem az arduino IDE-vel, hanem mondjuk újraprogramozni a bootloader-t, akkor ahhoz kell a RESET láb.
SPI-n való programozás után, vagy Arduino IDE-vel való programozás után ma már autómatikus RESET-et nyom a szoftware.
Én inkább így javasolnám: Fuse extended byte: 0xFE Fuse high byte: 0xdd Fuse low byte: 0xe1
avr dude programoztam arduino isp megolsásal..... nem ismerem avr világát arduino ide kivül azal biztonságos programozni Kész fusebit miat meg konfig miat.. Ezt a reset alapu nem ismerem .... Akor a high bit álitja a mod kiválaztást reset/no reset? no reset SPI verzio: 0XFE...0X5D...0XE1 ? köszi az infot!
Az alsó byte-ot nem állítod. A felső bit-eket, pedig a 2 lehetőség közül érdemes választani. Persze lehet cizellálni, de alapnak felesleges.
Eszközkezelőböl kiolvasva pedig ez a VID/PID number: Digispark Virtual Com Port Hardware azonosító: USB\VID_16D0&PID_087E A másik át lett írva billentyűzetnek így ott más a VID/PID. Üdv. laaci
Mondom nekem gyárilag már felraktak egy bootloader-t. Így nekem csak használni kellet, és mivel működött nem cseréltem. Amit saját magam raktam össze és programoztam, az annó aktuálisan leszedhető új bootloader volt (Micronucleus V2.03). MOSI,MISO,stb. lábakon felprogramoz, utána használható a Virtualizált USB.
micronucleus botloader verziokat cserélgetem mindegyik ugy reagált usb win alat no usb connect... de jolene egy normális bootloader ami müködne is... Te milyet használsz?
Ha USB-n felkötve nincs PID/VID, akkor azon nincs bootloader. Mivel az ATTINY-n nincs hardware-es USB porttal felszerelve, ezért az USB-t csak software-esen, a bootlodaer "virtualizálja". Nekem gyárilag ezt feltöltötték. Én felkötöttem a PC-re volt PID/VID number, ArduinoIDE a megfelelö - általad is linkelt kiegészítővel - látta és kezelte. Ha van másik arduinod, akkor azt ISP programozónak programozva, a Digispark altal ajánlott "micronucleus" sofware-rel, a bootlodaer-t feltöltve működő lesz.
Esetleg az ic-re nem lehet rákeresni hogy milyen usb illesztő kell hozzá? Csak egy tipp, mert a kínai arduinora is más drivert kellet az illesztő miatt ha jól rémlik ott CH340 driver kellet itt is lehetséges hogy valami hasonló a probléma!
Köszönöm a tanácsokat. Karácsony környékén eljön az az állapot, hogy nem dolgozok reggeltől estig. Tart kb. egy hétig. Szerintem még az a hét is kevés lesz, hogy önállóan ilyen programokat írjak. Ezért kutakodtam a NET-en, hátha találok megoldást a feladatra. Mindenhol "csak" a gombot nyomva tartót találtam.
edig ami verziot probáltam kék(miniusbs)/felete mind igy kezdi ha feldugom win alá több alap lapin is "USB Device Not Recognised" ehez nemtud füzni ilesztöt a wun sem mert nincs vid/pid usb port azonosito sem ami a hadwer/ driver azonositás történik win usb eszközné "unknow driver van rendszer alat csak! neked hogy sikerült müködésre birni?
három dolgot javasolnék aminek érdemes utánanézni ha ügyesebben akarsz programozni: - aszinkronitás (polling és callback vezérelt események) - állapotgépek - párhuzamosság
Az aszinkronitás azért kell, mert egy feladatot pl egy tengely mozgatást alapvetően nem úgy akarsz megoldani, hogy ott állsz a progival és figyeled meg várod, hanem csak megjelölöd pl egy változóban, hogy akarsz valamit, a program majd a hatterben figyeli, hogy mikor van epp ezzel a feladattal kapcsolatban valami es megcsinálja és te csak néha kérdezgeted, hogy mi az állapota a feladatnak. Ide fontos kifejezes a pollozas es callback. A pollozasnal kerdezgeted X időnként, mig a callback eseten egy esemeny (pl interrupt) tortenik ami indit egy fugvenyhivast feled es jelzi hogy kesz van vagy valami tortent.
Allapotgep egy nagyszeru dolog arra, hogy egy komplex feladatot lebonts kisebb reszekre. Pl felhuzom a kimeneti labat es inditok egy timert. Atmegyek a kovetkezo allapotba ahol csak varom hogy a timer mikor jar le, de ezt csak idonkent pollozva vizsgalom meg (vagy ha interrupt van az interrupt billent tovabb masik allapotba), majd ha lejart a timer akkor lehuzom a labat es csinalok valami mast es igy tovabb. Akar lehet egy tengely ide oda mozgatasara hasznalni, hiszen a tengelynel varakozni kell arra, hogy elejren az egyik vegebe, ott elinditani a masik iranyba es megint varakozni.
Parhuzamossag azert jo mert a programoddal egyszerre tobb dolgot csinalhatsz. Ehhez viszont az kell, hogy sehol ne legyen a programban olyan hogy varakozol sok-sok milliszekundomokat. Nyilvan abbol indulok ki, hogy nincs operacios rendszered amivel taszkokat kezelsz. Amint valahol sokat varakozol, elveszed a CPU-t mas feladatok elol. Viszont ha nincs varakozas akkor kelleni fog neked egy uj eszkoztar arra hogy leprogramozd amit szeretnel: Ez pedig a fent emlitett par dolog lesz.
szivesen most nézem esetleg timert sem ártana használni mert akkor sokkal gyorsabb lesz a progi, legalább is a léptető mocihoz, ne függjön a sebessége a program futásától és a végállásokat is hamarabb észreveszi a progi, ha a főprogram nem időzítésekkel van tele...
switch (irany) { case 1: valamit csinálsz irany=2; break;
case 2: valamit csinálsz irany=1; break;
// kezdéskor meg eldöntöd merre menjen, az iranyt meg a kapcsolók váltják
if (pin1) { irany=1;}
if (pin2) { irany=2;}
azért ne másold be, csak úgy szerkesztő nélkül gépeltem... a break -ot ne felejtsd le a case végéről mert különben nem ugrik ki a switch ből, hanem mindent végignéz..
Egy uno-val kellene két végállás közt (folyamatosan) mozgatnom egy tengelyt. Tápra kapcsolva el kellene indulnia, majd a végállásra futva irányt váltani. Ezt ismételni, a két végállás közt, míg a tápról le nem kapcsolom. Találtam egy programot, amivel azt tudtam elérni, hogy a végállások nyomógombjait nyomva tartva (hol az egyiket, hol a másikat) a megfelelő irányba mozogjon. "Önerőből" nem tudom elérni, hogy a nyomógombok egy impulzusára történjen az irányváltás. Ebben kérek segítséget.
// define a constant value named stepPin and assign the value 9 to it - this value will not change during our code // this assumes digital pin 9 of your Arduino is attached to the step input of your driver #define stepPin 9
// define a constant value named dirPin and assign the value 8 to it - this value will not change during our code // this assumes digital pin 8 of your Arduino is attached to the step input of your driver #define dirPin 8
// define the pins on which we've put our N.O. buttons #define button1 2 #define button2 3
// setup() loop, the Arduino only runs through this once void setup() { // digital pins on the Arduino can only be either set as an output or input - in our case we want to send data to the driver, so we choose output pinMode(stepPin , OUTPUT); pinMode(dirPin , OUTPUT);
// define our button pins as input pullup type - see http://arduino.cc/en/Tutorial/DigitalPins#.Uyphr4WN7q4 pinMode(button1, INPUT_PULLUP); pinMode(button2, INPUT_PULLUP);
// let's set an initial value of low to both our step and dir pins, we could easily write false or 0 instead of LOW digitalWrite(stepPin , LOW); digitalWrite(dirPin , LOW); }
// loop() loop, the Arduino continuously cycles through this as fast as it can void loop() {
if (digitalRead(button1) == LOW && digitalRead(button2) == HIGH) { // if button1 is pressed and button2 is not pressed digitalWrite(dirPin, LOW); // move in the LOW direction } else if (digitalRead(button1) == HIGH && digitalRead(button2) == LOW) { // if btton1 is not pressed and button2 is pressed digitalWrite(dirPin, HIGH); // move in HIGH direction }
if (digitalRead(button1) == LOW || digitalRead(button2) == LOW) { // if either button is pressed
// set a HIGH value to our step pin, this turns the voltage on for that pin digitalWrite(stepPin , HIGH);
// let's wait here for 50 milliseconds; note the units, this means 0.05s delay(0.1);
// let's set our step pin to false, this turns the voltage off for that pin and gives us the on/off cycle we need digitalWrite(stepPin , LOW);
// wait another 50 milliseconds after which time we loop back to the beginning of the loop() loop delay(0.1);
} }
frob | 2339
2017-11-07 11:25:58
[762]
a második hiba még se hiba csak félig, rossz szám megadás volt és mégse a hosszt hanem az addig jelöli, csak nem hje a help
ha az ember leírja hamarabb meglátja a hibát ami 2 is volt 1 töröltem a változót mielőtt feldolgoztam volna és a második szám a hossz, nem pedig hogy meddig...