Fórum témák
- • Borhűtő vezérlő panel
- • Erősítő mindig és mindig
- • Leválasztó transzformátor
- • Tranzisztorok helyettesítése
- • Nagyfeszültségű tápegység
- • Boombox javítás
- • USB 3.2 HUB modul
- • Dobozolási technikák, műszerdobozok
- • A műhely (bemutató topik, ahol az alkotások készülnek)
- • Rádióamatőrök topikja
- • Sprint-Layout NYÁK-tervező
- • Számítógép hiba, de mi a probléma?
- • Rádió áthangolása, OIRT - CCIR konverter
- • Suzuki Swift elektronika
- • PLC kérdések
- • Transzformátor készítés, méretezés
- • Fejhallgató erősítő
- • Hangváltók (készítése)
- • Elfogadnám, ha ingyen elvihető
- • Klíma szervizelés, javítás
- • Arduino
- • Kondenzátor
- • Hűtőgép kompresszor
- • Kapcsolóüzemű tápegység
- • Videomagnó problémák
- • Opel Astra elektromos hibák
- • Analóg voltmérő (multiméter)
- • Mosogatógép hiba
- • Li-Ion saját akkucsomag készítése
- • Kaputelefon
- • Adatlapot keresek
- • CNC építése házi alkatrészekből az alapoktól
- • Autóriasztó és központi zár
- • Elektromos távirányítós kapunyitó
- • Analóg oszcilloszkóp javítása
- • LED szalag
- • Hangszórójavítás (otthon)
- • Mosógép vezérlők és általános problémáik
- • Érdekességek
- • Villanypásztor
- • IMI villanymotor
- • Digitális adatátvitel
- • 3-fázisú Modbus-os teljesítményszabályzó (SCR power controller)
- • Villanyszerelés
- • TDA7294 végerősítő
- • Klíma beszerelése, fűtés-hűtés házilag
- • Kombikazán működési hiba
- • Általános antennás kérdések, válaszok
- • Elektronikai témájú könyvek újságok
- • Elektromos vezérlésű pneumatika
- • Internetes rádióvevő
- • Alternativ HE találkozó(k)
- • 3D nyomtatás
- • Felajánlás, azaz ingyen elvihető
- • Akkumulátor töltő
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
NEM!
Azt hiszem valamit nem jól írtam le.
Adott egy Arduino, benne egy futó sketch, ebben sok Serial.print() kiírás az UART0 soros portra. Erre a soros portra kiküldött adatokat kellene eltárolni egy átmeneti bufferba az Arduino programon belül!
Köszi Kera_Willnek is... Sajnálom, hogy nem lehet....
Szia,
Talán a legegyszerűbb megoldás az az, ha teszel bele egy memoriakártyát 2-300 Ft+kártya ( Bővebben: Link) és amikor a soros portra kiíratod, akkor ide is beírod. Ha pedig szükséged van rá, akkor akár a soros portra küldött tetszőleges paranccsal visszaolvasható...
Egy arduino unoval vezérelt kisebb mono aktív hangSZÓRÓt. Amik rendelkezésre állnak: Arduino Uno, Hangszóró, Hangszóró doboz, poti,távirányító,ir vevő, egy rakás led és rgb led, 3.5 mm jack, arduino starter kit ![](/pic/smile/smile.gif) . Az lényeges hogy 3.5 ös jackel működjön. Vmi mukodés jelzō led legyen
Valahogy mindent leírtál csak azt nem hogy mit akarsz megvalósítani . Egy kicsit gondold át és ugorj neki újra . Az arduinóból nem lehet erősítőt csinálni azt nem arra tervezték ,ez olyan mintha azt mondanád hogy a laptopból akarsz háztájikocsit csinálni A hozzászólás módosítva: Jan 22, 2016
Sziasztok!
Van ez a kódom, amiben a 2. FORM után szeretném megjeleníteni a soros portra érkező adatot. Félig sikerült is, de egy több karakteres infóból csak az utolsó karakter jelenik meg vagy még az sem...
Valaki tud megoldást?
Köszi.
#include <SPI.h>
#include <Ethernet.h> // Initialize the libraries.
#include <Servo.h>
Servo myservo;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,121);//You will want to fill these in with your MAC and IP address.
EthernetServer server(8080); // Assigning the port forwarded number. It's almost always 80.
String readString; // We will be using strings to keep track of things.
int val; // Using val as a variable for the PIR status.
int pir=3;
void setup(){
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(pir, INPUT);
Ethernet.begin(mac, ip);
myservo.attach(9);
myservo.write(45);
}
void loop(){
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) { // This is all where we start up the server and strings.
char c = client.read();
if (readString.length() < 100) {
readString += c;
}
if (c == '\n') {
// Serial.println(readString); // And here we begin including the HTML
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<hmtl>");
client.println("<head>");
client.println("ARDUINO PAGE");
client.println("</head>");
client.println("<title>");
client.println("ARDUINO + ETHERNET Page");
client.println("</title>");
client.println("<body bgcolor=black>");
client.println("<font color=white>");
client.println("<meta http-equiv=\"refresh\" content=\"4\">"); // This is used to refresh the page so
client.println("<center>"); // we can see if there is Motion or not.
client.println("<b>");
client.println("</b>");
client.println("<p>");
client.println("<table border=0 width=200>");
client.println("<tr>");
client.println("<td align=center>");
client.println("<font color=white>");
client.println("The Temperature is:");
client.println("</td>");
client.println("</tr>");
client.println("<tr>");
client.println("<td align=center>");
client.println("<font color = turquoise size=10>");
int temp = (((5*analogRead(5)*100/1024))); // This replaces the 00 with a temperature in F.
client.println(temp);
client.println("* C");
client.println("</td>");
client.println("</tr>");
client.println("</table>");
client.println("<p>");
client.println("<FORM>");
client.println("<INPUT type=button value=LED1-ON onClick=window.location='/?lighton1\'>");
client.println("<INPUT type=button value=LED1-OFF onClick=window.location='/?lightoff1\'>");
client.println("</FORM>"); // Above and below you'll see that when we click on a button, it adds a little snippet
client.println("<FORM>"); // to the end of the URL. The Arduino watches for this and acts accordingly.
client.println("<INPUT type=button value=Servo-0 onClick=window.location='/?serv0\'>");
client.println("<INPUT type=button value=Servo-45 onClick=window.location='/?serv45\'>");
client.println("<INPUT type=button value=Servo-90 onClick=window.location='/?serv90\'>");
client.println("<INPUT type=button value=Servo-135 onClick=window.location='/?serv135\'>");
client.println("<INPUT type=button value=Servo-180 onClick=window.location='/?serv180\'>");
client.println("</FORM>");
client.print("<table border=1 width=200>");
client.print("<tr>");
client.print("<td align=center>");
client.print("<font color=white size=3>");
char inByte;
if (Serial.available()) {
inByte = Serial.read();
client.write(inByte);
}
client.print("</td>");
client.print("</tr>");
client.print("<tr>");
client.print("<td align=center>");
client.print("<font color=white size=3>"); // And below we will print Motion if there is, and No Motion if there's not.
val = digitalRead(pir);
if (val == HIGH){
client.print("MOTION");
}
else {
client.print("NO MOTION");
}
client.print("</td>");
client.print("</tr>");
client.print("</table>");
client.println("</center>");
client.println("</font>");
client.println("</body>");
client.println("</html>");
delay(10);
if(readString.indexOf("?lighton") >0) // these are the snippets the Arduino is watching for.
{
digitalWrite(2, HIGH);
}
else{
if(readString.indexOf("?lightoff") >0)
{
digitalWrite(2, LOW);
}
else{
if(readString.indexOf("?serv0") >0)
{
myservo.write(0);
}
else{
if(readString.indexOf("?serv45") >0)
{
myservo.write(45);
}
else{
if(readString.indexOf("?serv90") >0)
{
myservo.write(90);
}
else{
if(readString.indexOf("?serv135") >0)
{
myservo.write(135);
}
else{
if(readString.indexOf("?serv180") >0)
{
myservo.write(180);
}
}
}
}
}
}
}
readString="";
client.stop(); // End of session.
}
}
}
}
}
Idézet: „a soros portra kiküldött adatokat kellene eltárolni egy átmeneti bufferba az Arduino programon belül!”
Ha úgyis kiküldöd, amikor is a PC-vel gond nélkül rögzíthető, akkor miért akarod az Arduinoban tárolni (ahol nyilvánvalóan nehezen fér el)?
Szerintem az '}else if {}" -eket nem jól zárojelezted!
Bővebben: Link
És ha Flasból kezeled a Stringeket, meg sporolsz 1000 Byte memoriát!
#include <SPI.h>
#include <Ethernet.h> // Initialize the libraries.
#include <Servo.h>
Servo myservo;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,121);//You will want to fill these in with your MAC and IP address.
EthernetServer server(8080); // Assigning the port forwarded number. It's almost always 80.
String readString; // We will be using strings to keep track of things.
int val; // Using val as a variable for the PIR status.
int pir=3;
void setup(){
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(pir, INPUT);
Ethernet.begin(mac, ip);
myservo.attach(9);
myservo.write(45);
}
void loop(){
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) { // This is all where we start up the server and strings.
char c = client.read();
if (readString.length() < 100) {
readString += c;
}
if (c == '\n') {
// Serial.println(readString); // And here we begin including the HTML
client.println(F("HTTP/1.1 200 OK"));
client.println(F("Content-Type: text/html"));
client.println();
client.println(F("<hmtl>"));
client.println(F("<head>"));
client.println(F("ARDUINO PAGE"));
client.println(F("</head>"));
client.println(F("<title>"));
client.println(F("ARDUINO + ETHERNET Page"));
client.println(F("</title>"));
client.println(F("<body bgcolor=black>"));
client.println(F("<font color=white>"));
client.println(F("<meta http-equiv=\"refresh\" content=\"4\">")); // This is used to refresh the page so
client.println(F("<center>")); // we can see if there is Motion or not.
client.println(F("<b>"));
client.println(F("</b>"));
client.println(F("<p>"));
client.println(F("<table border=0 width=200>"));
client.println(F("<tr>"));
client.println(F("<td align=center>"));
client.println(F("<font color=white>"));
client.println(F("The Temperature is:"));
client.println(F("</td>"));
client.println(F("</tr>"));
client.println(F("<tr>"));
client.println(F("<td align=center>"));
client.println(F("<font color = turquoise size=10>"));
int temp = (((5*analogRead(5)*100/1024))); // This replaces the 00 with a temperature in F.
client.println(temp);
client.println(F("* C"));
client.println(F("</td>"));
client.println(F("</tr>"));
client.println(F("</table>"));
client.println(F("<p>"));
client.println(F("<FORM>"));
client.println(F("<INPUT type=button value=LED1-ON onClick=window.location='/?lighton1\'>"));
client.println(F("<INPUT type=button value=LED1-OFF onClick=window.location='/?lightoff1\'>"));
client.println(F("</FORM>")); // Above and below you'll see that when we click on a button, it adds a little snippet
client.println(F("<FORM>")); // to the end of the URL. The Arduino watches for this and acts accordingly.
client.println(F("<INPUT type=button value=Servo-0 onClick=window.location='/?serv0\'>"));
client.println(F("<INPUT type=button value=Servo-45 onClick=window.location='/?serv45\'>"));
client.println(F("<INPUT type=button value=Servo-90 onClick=window.location='/?serv90\'>"));
client.println(F("<INPUT type=button value=Servo-135 onClick=window.location='/?serv135\'>"));
client.println(F("<INPUT type=button value=Servo-180 onClick=window.location='/?serv180\'>"));
client.println(F("</FORM>"));
client.print(F("<table border=1 width=200>"));
client.print(F("<tr>"));
client.print(F("<td align=center>"));
client.print(F("<font color=white size=3>"));
char inByte;
if (Serial.available()) {
inByte = Serial.read();
client.write(inByte);
}
client.print(F("</td>"));
client.print(F("</tr>"));
client.print(F("<tr>"));
client.print(F("<td align=center>"));
client.print(F("<font color=white size=3>")); // And below we will print Motion if there is, and No Motion if there's not.
val = digitalRead(pir);
if (val == HIGH){
client.print(F("MOTION"));
}
else {
client.print(F("NO MOTION"));
}
client.print(F("</td>"));
client.print(F("</tr>"));
client.print(F("</table>"));
client.println(F("</center>"));
client.println(F("</font>"));
client.println(F("</body>"));
client.println(F("</html>"));
delay(10);
if(readString.indexOf("?lighton") >0) // these are the snippets the Arduino is watching for.
{
digitalWrite(2, HIGH);
}
else{
if(readString.indexOf("?lightoff") >0)
{
digitalWrite(2, LOW);
}
else{
if(readString.indexOf("?serv0") >0)
{
myservo.write(0);
}
else{
if(readString.indexOf("?serv45") >0)
{
myservo.write(45);
}
else{
if(readString.indexOf("?serv90") >0)
{
myservo.write(90);
}
else{
if(readString.indexOf("?serv135") >0)
{
myservo.write(135);
}
else{
if(readString.indexOf("?serv180") >0)
{
myservo.write(180);
}
}
}
}
}
}
}
readString="";
client.stop(); // End of session.
}
}
}
}
}
Forditsd csak le mindkét beszúrt program kódot, meg látod a külömbséget! A hozzászólás módosítva: Jan 22, 2016
Amit te szúrtál be, az 200 bájttal nagyobb fordítás után...
De viszont az SRAM foglalása 1600 helyett, csak 600 bájt!
És abból van kevesebb az AVRben.
Köszi a válaszokat, megpróbálom még pontosabban megfogalmazni mi a cél.
Egy elágaztatásról van szó! Debug okok miatt pl. sok infót küldünk ki Serial.print(), Serial.println(), vagy Serial.prinf() segítségével. Ezek vagy csak egyszerűen karakterként megjelennek a soros port Tx lábán, vagy komoly feldolgozás, formázást követően. Tehát az Tx láb nagyon sok irányból és sok előfeldolgozás után jelenít meg adatokat, amiket aztán egy egyszerű soros monitor programmal bárhol megnézhet az ember. (Miért érdekes ez? mert pl egy float változó egyszerű kiírása mögött is komoly átalakító folyamatok vannak, mire pl 6 számjegyű, tizedesponttal ellátott ASCII formában jelennek meg a Tx lábon)
Mindez a Tx adópufferbe betöltött adatokból történik. Ha meg lehetne találni azt az (esetleg 1 konkrét sort amelyik ténylegesen a Tx pufferbe írást végzi, bármely irányból jött is a kérelem a Tx portra írásra) akkor ott talán a Tx bufferbe írás után azonnal be lehetne iktatni egy új programrészt, amely egy másik pufferbe is ír.
A cél hogy a Tx porton megjelenő infók egy másik pufferből bármikor kiküldhetők legyenek bárhova, pl Ethernet kártyán keresztül a világ végéra. Tehát most nem tárolási kérdésről van leginkább szó.
Az eddigi turkálásaim szerint a Tx buffer írását a ..Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.cpp végzi! Ebbe kellene belepiszkálni ha nincs jobb ötlet.
Használj több serial portos kontrollert pl atmega2560 ez az arduino mega kontrollere, a TX lábat kösd a másik uart RX lábára és ezeket a vett adatokat mentsd el tömbbe.
Okés, de még mindig az alap problémám nem oldódott meg...
Sziasztok!
Tudtok valami egyszerű megoldást arra, hogy a digitális portot leválasszam az arra bejövő jelről.
Úgy értem pár kHz-es bekövőjeleket dolgozok fel vele, de a jelfeszültség nem garantált, hogy 5v alatt marad és nem akarnám kiégetni a nano-mat ![](/pic/smile/smile.gif)
Relém van, de az lassú lenne gondolom, szóval valami IC-s kapcsolásra vágynék.
Köszi előre is!
Ha csak néhány voltos különbségről van szó, akkor egy soros ellenállás és az Arduino beépített védődiódája is elég. Ha jól emlékszem, a PICAXE mikrovezérlők soros portra csatlakozó kábelénél egy 22 kOhmos ellenállással ![](/pic/smile/freaked.gif) "intézik el" a szintillesztést (RS-232 szerint 12 V-os is lehet a jel...)
Icserny kolléga megoldása jó, ha viszont "veszélyesebbnek" ítéled meg a bejövő jelet, akkor használj optocsatolót!
Rendbe szedted az: }else if() {} zárojelezést?
Egy if ágon belül csak 1 else lehet, mégpedig az utolsó!
Sziasztok. Kérnék egy kis segítséget.
Nemrég kezdtem ismerkedni az Arduino-val. Egy stoppert kódot akarnék beilleszteni egy pár alapfunkciójú kódba. A letölthető stoppert kódot kéne egy kicsit leegyszerűsíteni, „kitakarítani”, csak a kijelző funkció kellene, semmi más. Ebben kérném a segítségeteket. A kódba kellene egy változó, ami ha 0 = áll a stopper, ha 1 = megy a stopper.
Ez egy LED-es, 4 digittes kijelző, ( TM1637) amin a másodperc és a percet mérné. Ha még megoldható lenne az, hogy egy változóval ki-be kapcsolható lenne a LED kijelző fénye, az csak „hab lenne a tortán”. Előre is köszönöm.
74HC540 74HC541 jó megoldás leválasztásra, foglalatba rakod és egyszerűbb cserélni mint egy processzort, nem én találtam ki a "nagyoktól" lestem el. Mivel a HC ben is van védődióda így soros ellenállás is kellhet ha a feszültség magasabb mint a tápfeszültség. A hozzászólás módosítva: Jan 23, 2016
Persze, kivettem mindet. Szerintem nem kell oda egy sem.
if(readString.indexOf("?lighton") >0) // these are the snippets the Arduino is watching for.
{
digitalWrite(2, HIGH);
}
if(readString.indexOf("?lightoff") >0)
{
digitalWrite(2, LOW);
}
if(readString.indexOf("?serv0") >0)
{
myservo.write(0);
}
if(readString.indexOf("?serv45") >0)
{
myservo.write(45);
}
if(readString.indexOf("?serv90") >0)
{
myservo.write(90);
}
if(readString.indexOf("?serv135") >0)
{
myservo.write(135);
}
if(readString.indexOf("?serv180") >0)
{
myservo.write(180);
}
Sziasztok !
Építettem egy lézer gépet és olyan problémám van hogy több mintát szeretnék bele , meg van hogy a // Shape részbe keresgéljek , írogattam is három szöget, kört de valamiért nem jött össze. Arra jutottam hogy a két motor nem egyszerre és egymástól függetlenül mozog és így nem rajzolja ki a kört. A körhöz for (int i = 0; i < [somenumber]; i++)
{
angle = i*2*3.14/100;
Xpos = 250 + (cos(angle) * Rad);
Ypos = 250 + (sin(angle) * Rad);
//Move x motor to xpos
//move y motor to ypos
//it does this for each point of the circle, so you dont have to run them at the same time
}
kirajzolni ezzel a kóddal próbálkoztam, valaki tudna valami segítséget adni ? Vagy valami algoritmusos le írást ami ehhez jó .
Sziasztok!
Arduino kimenetére ellenállással (330Ohm) vagy anélkül lehet működtetni egy Fotek 25A-s SSR-t?
Illetve PWM szabályozást hogy bírja az SSR?
Köszi.
PWM-mel szabályozni SSR-t? Nagyon nem jó irány. A PWM frekvencia függvényében össze-vissza fog kapcsolni, már ha egyáltalán bekapcsol.
Ne közvetlen kösd a kontroller kimenetére a vezérlést, hanem legalább egy tranzisztoron keresztül.
Tudtommal az SSR -t váltóáramhoz használják.
1. PWM -el nem szabályozunk váltóáramot.
2. Ha valóban váltóáramot akarsz vezérelni, azt SSR -el csak On vagy OFF lehet.
Jó lenne tudni, mi a konkrét feladat... A hozzászólás módosítva: Jan 24, 2016
Ha kell illesztés, akkor majdnem felejtős....
Okés, akkor a PWM dolog kiesett.
Fűtőbetéteket szeretnék kapcsolni, csak nem relével meg mágneskapcsolóval. Jó, ha csendesen teszi a dolgát. Ez a feladat.
Két lehetőséged van.
Ha nagy teljesítményű fűtőbetét, marad az SSR, és BE KI kapcsolgatod amikor épp kell, pl hőmérséklet függvényében, vagy idő függvényében.
Második, ha kis teljesítményű a fűtőbetét, egyenáramról táplálod, megfelelő tápegységről.
Szintén hőfoktól vagy időtől függően. Viszont itt képbe jöhet a PWM szabályozás is.
Így akár 0%-100% ig fokozatmentes vezérlés is megvalósítható egy kellő teljesítményű MOSFET -tel... A hozzászólás módosítva: Jan 24, 2016
DC nem jöhet szóba, mert 3kW teljesítményű betétekről van szó....
Szia.
Két tipusu SSR van: Zero Crossing és Random Turn-On.
A ZC tipus az első nullátmenetnél kapcsol be, és az aktiváló jel megszünése után a nullátmenetnél kapcsol ki. Egész színusz félperiódusokat enged át, nem generál zajt. Neked ez lenne jó.
A randomos, az aktivációnál kapcsol be, ha te nem figyeled a nullátmenetet akkor vágja a színuszt (fázishasítás), nullátmenetnél kapcsol ki. Ez a fajta zajos, zajszűrnő beépításe ajánlott.
Mint ahogy írták, hagyományos PWM-mel nem lehet vezérelni (pár kHz), nincs is értelme, mert a 3 kW elég nagy melegítő, a rendszered holtideje is elég nagy lehet (több s vagy akár perc is).
A vezérlésed lehet PWM-szerű, ahol az alapidőd/periódusod pl 3 s, és itt változtatod a kitöltési tényezőt. Persze valójában ez csak ON/OFF mert lassú, de időkerettel
|
|