kikk0 Skrevet 30. mars 2009 Del Skrevet 30. mars 2009 Hei! Trenger å sende noen bytes gjennom serial porten til et arduino kort for å styre noen leds. det eg trenger å sende er verdier fra 0 til 1023. korleis gjør eg det i c++? bruker microsoft visual c++. trenger tips til en enkel kode som gjør dette Lenke til kommentar
Giddion Skrevet 30. mars 2009 Del Skrevet 30. mars 2009 Hva mener du med sende verdier fra 0 til 1023.... snakker vi 16 bit integer eller noen ascii greier? Jaja uansett så vil nok dette hjelpe: Goooogle : serial communication windows Lenke til kommentar
kikk0 Skrevet 30. mars 2009 Forfatter Del Skrevet 30. mars 2009 Hva mener du med sende verdier fra 0 til 1023.... snakker vi 16 bit integer eller noen ascii greier? Jaja uansett så vil nok dette hjelpe: Goooogle : serial communication windows tja godt spørsmål.. er ganske n00b, men saken er at arduinoen vil gi 0 volt når den får tallet 0 og 5 volt når den får tallet 1023, og spenning tilsvarende tall mellom det. det er sikkert snakk om ein integer eller noe.. skal bare vere tall rett å slett.. er nok dårlig forklaring, men eg veit ikkje meir Lenke til kommentar
Garanti Skrevet 30. mars 2009 Del Skrevet 30. mars 2009 (endret) Således: http://www.arduino.cc/playground/Interfacing/CPPWindows ? Edit: og spenning tilsvarende tall mellom det. Beklager, er redd du ikke kan gjøre dette. Arduino benytter så vidt jeg har forstått PWM i stedet for å regulere spenningen, men effekten blir den samme Endret 30. mars 2009 av Garanti Lenke til kommentar
kikk0 Skrevet 30. mars 2009 Forfatter Del Skrevet 30. mars 2009 Således: http://www.arduino.cc/playground/Interfacing/CPPWindows ? Edit: og spenning tilsvarende tall mellom det. Beklager, er redd du ikke kan gjøre dette. Arduino benytter så vidt jeg har forstått PWM i stedet for å regulere spenningen, men effekten blir den samme jo det går. har fått et programm i "processing" som gjør det. her er koden til det: // Dimmer - sends bytes over a serial port // by David A. Mellis import processing.serial.*; Serial port; void setup() { size(256, 150); println("Available serial ports:"); println(Serial.list()); // Uses the first port in this list (number 0). Change this to // select the port corresponding to your Arduino board. The last // parameter (e.g. 9600) is the speed of the communication. It // has to correspond to the value passed to Serial.begin() in your // Arduino sketch. port = new Serial(this, Serial.list()[1], 9600); // If you know the name of the port used by the Arduino board, you // can specify it directly like this. //port = new Serial(this, "COM1", 9600); } void draw() { // draw a gradient from black to white for (int i = 0; i < 256; i++) { stroke(i); line(i, 0, i, 150); } // write the current X-position of the mouse to the serial port as // a single byte port.write(mouseX); } det kommer opp et lite vindu som eg drar musa over. og når musa er i det kvite området så sendes 1023 til arduinoen og det lyser max på dioden. når eg er i det svarte området sender den 0 til arduinoen. mellom det så dimmer lyset. Lenke til kommentar
phfjeld Skrevet 30. mars 2009 Del Skrevet 30. mars 2009 Garanti sa ikke at lysdiodene ikke ville endre lysstyrke, bare at ikke Audrinoen opererer med forskjellige spenninger på ut-portene. Les om PWM, så forstår du hva han mente. Lenke til kommentar
xoriath Skrevet 1. april 2009 Del Skrevet 1. april 2009 Således: http://www.arduino.cc/playground/Interfacing/CPPWindows ? Edit: og spenning tilsvarende tall mellom det. Beklager, er redd du ikke kan gjøre dette. Arduino benytter så vidt jeg har forstått PWM i stedet for å regulere spenningen, men effekten blir den samme jo det går. har fått et programm i "processing" som gjør det. her er koden til det: // Dimmer - sends bytes over a serial port // by David A. Mellis import processing.serial.*; Serial port; void setup() { size(256, 150); println("Available serial ports:"); println(Serial.list()); // Uses the first port in this list (number 0). Change this to // select the port corresponding to your Arduino board. The last // parameter (e.g. 9600) is the speed of the communication. It // has to correspond to the value passed to Serial.begin() in your // Arduino sketch. port = new Serial(this, Serial.list()[1], 9600); // If you know the name of the port used by the Arduino board, you // can specify it directly like this. //port = new Serial(this, "COM1", 9600); } void draw() { // draw a gradient from black to white for (int i = 0; i < 256; i++) { stroke(i); line(i, 0, i, 150); } // write the current X-position of the mouse to the serial port as // a single byte port.write(mouseX); } det kommer opp et lite vindu som eg drar musa over. og når musa er i det kvite området så sendes 1023 til arduinoen og det lyser max på dioden. når eg er i det svarte området sender den 0 til arduinoen. mellom det så dimmer lyset. Denne Koden er da vel vitterlig ikke c++, men java? Lenke til kommentar
kurant Skrevet 1. april 2009 Del Skrevet 1. april 2009 (endret) Hei! Trenger å sende noen bytes gjennom serial porten til et arduino kort for å styre noen leds. det eg trenger å sende er verdier fra 0 til 1023. korleis gjør eg det i c++? bruker microsoft visual c++. trenger tips til en enkel kode som gjør dette Dette er ikke akkurat et svar på spørsmålet ditt, men dersom det ikke er noen spesielt vektig grunn til at du vil bruke C++ er ikke dette et godt språk til formålet. Jeg har nettopp skrevet en RGB-lysdiodekontrollapplikasjon til arduino hvor jeg brukte python. Her får du jobben gjort med et par linjer kode: import serial ser = serial.Serial(2,9600) ser.write('R128') Hvor 'R' indikerer fargen, og '128' indikerer intensiteten. Som du ser bruker jeg ASCII-koding, da dette er betydelig enklere å håndtere enn å sende binære verdier. Det er ikke så effektivt, men i slike applikasjoner har det ingen betydning. Denne verdien blir dekodet av en tilstandsmaskin som kjører på arduinoen med gjevne intervaller ledctrl_t get_cmd() { int i; char ledID; char ledval[5] = {'0','0','0','',''}; ledctrl_t ledctrl; // search for valid LED identifier while( ledID != 'R' && ledID != 'G' && ledID != 'B' ) { if(Serial.available() == 0) { ledID = '0'; break; } ledID = Serial.read(); } // did not find a valid header if(ledID == '0'){ ledctrl.id = 0; return ledctrl; } else { // set the LED pin switch (ledID) { case 'R' : ledctrl.id = redled; break; case 'G' : ledctrl.id = grnled; break; case 'B' : ledctrl.id = bluled; break; default : ledctrl.id = 0; } // fetch the intensity value if(Serial.available() >= 3) { for(i=0;i<3;++i) ledval[i] = Serial.read(); ledctrl.val = atoi(ledval); } if(ledctrl.val > 255) ledctrl.val = 255; if(ledctrl.val < 0) ledctrl.val = 0; return ledctrl; } } Endret 1. april 2009 av kurant Lenke til kommentar
aspic Skrevet 1. april 2009 Del Skrevet 1. april 2009 Således: http://www.arduino.cc/playground/Interfacing/CPPWindows ? Edit: og spenning tilsvarende tall mellom det. Beklager, er redd du ikke kan gjøre dette. Arduino benytter så vidt jeg har forstått PWM i stedet for å regulere spenningen, men effekten blir den samme jo det går. har fått et programm i "processing" som gjør det. her er koden til det: // Dimmer - sends bytes over a serial port // by David A. Mellis import processing.serial.*; Serial port; void setup() { size(256, 150); println("Available serial ports:"); println(Serial.list()); // Uses the first port in this list (number 0). Change this to // select the port corresponding to your Arduino board. The last // parameter (e.g. 9600) is the speed of the communication. It // has to correspond to the value passed to Serial.begin() in your // Arduino sketch. port = new Serial(this, Serial.list()[1], 9600); // If you know the name of the port used by the Arduino board, you // can specify it directly like this. //port = new Serial(this, "COM1", 9600); } void draw() { // draw a gradient from black to white for (int i = 0; i < 256; i++) { stroke(i); line(i, 0, i, 150); } // write the current X-position of the mouse to the serial port as // a single byte port.write(mouseX); } det kommer opp et lite vindu som eg drar musa over. og når musa er i det kvite området så sendes 1023 til arduinoen og det lyser max på dioden. når eg er i det svarte området sender den 0 til arduinoen. mellom det så dimmer lyset. Denne Koden er da vel vitterlig ikke c++, men java? Koden liknar ikkje på noko Java eg har programmert i alle fall Lenke til kommentar
kikk0 Skrevet 2. april 2009 Forfatter Del Skrevet 2. april 2009 den koden er for et språk som heiter processing.. har lurt litt på å bruke microsoft visual basic .net til å lage programmet mitt i.. siden det virker veldig greit å bruke med tanke på interface og slikt.. hvordan kommuniserer man med serialen der? har funnet ein del eksempel på nettet, men dei er så enormt store at det er umulig for meg å skjønne noen ting.. Lenke til kommentar
GeirGrusom Skrevet 2. april 2009 Del Skrevet 2. april 2009 (endret) Jeg kjenner ikke igjen språket, men det ligner mer på Java enn C++ edit: ok, noen kom meg i forkjøpet. I .NET bruker du System.IO.Ports.SerialPort klassen. Endret 2. april 2009 av GeirGrusom Lenke til kommentar
snippsat Skrevet 4. april 2009 Del Skrevet 4. april 2009 (endret) Python koden til kurant er enkel og lage interface(GUI)som styrer utifra den er lett. Binder "ser.write('R128')" til en slider med 0-128. Kan ha knapper for for lys(RBG) Du får tenke på kan nok hjelpe til med koding,viss det trengs. Endret 4. april 2009 av SNIPPSAT Lenke til kommentar
kurant Skrevet 4. april 2009 Del Skrevet 4. april 2009 Python koden til kurant er enkel og lage interface(GUI)som styrer utifra den er lett.Binder "ser.write('R128')" til en slider med 0-128. Kan ha knapper for for lys(RBG) Du får tenke på kan nok hjelpe til med koding,viss det trengs. Ja det er faktisk akkurat det jeg har gjort, vha PyQT. Jeg viste bare et lite avsnitt av koden for enkelhets skyld. Hvis det er interesse for det kan jeg legge ut hele koden senere, jeg har den ikke her. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå