Josten Skrevet 9. mai 2011 Del Skrevet 9. mai 2011 Å lese inn lyd var litt vanskeligere enn jeg først antok, så jeg har ikke fått tid til å kikke så mye på det enda, og rekker nok ikke å se så mye på det før til sommeren. Men jeg la ved et lite program som demonstrerer bruk av seriellporten i c#. Exe-filen ligger i bin/debug, og prosjektet kan åpnes i visual studio 2010. Har ikke noen spesiell toturial innen c# å anbefale, men vil tro det burde ligge mye forskjellig ute. Med programmet kan man koble seg til arduinoen ved å først velge riktig comport, og så trykke connect. Deretter kan man sende en tallverdi mellom 0 og 255. For å motta på arduino, sett baudrate til 9600. Jeg må si jeg ikke helt forsto hvordan du mente jeg skulle motta og benytte meg av informasjonen i et arduino-program. Kan du forklare litt nærmere? Koden blir vel omtrent som dette: void setup(){ Serial.begin(9600); } byte received; void loop(){ if(Serial.available()>0){ received = Serial.read(); } //gjøre noe lurt med received her } Lenke til kommentar
Meh. Skrevet 9. mai 2011 Del Skrevet 9. mai 2011 Koden blir vel omtrent som dette: void setup(){ Serial.begin(9600); } byte received; void loop(){ if(Serial.available()>0){ received = Serial.read(); } //gjøre noe lurt med received her } Jeg har prøvd å sette "received" som lysstyrken på en lysdiode, men det ser ikke ut til å gi så mye mening. Når jeg trykker på "Rec" begynner lysdioden å blinke litt tilfeldig, uavhengig av om jeg spiller av musikk på PC-en, eller om jeg blåser i mikrofonen. Lenke til kommentar
Puke Nukem Skrevet 9. mai 2011 Del Skrevet 9. mai 2011 (endret) Noen her som vet om det er vanskelig å lage seg et høvelig nøyaktig duty-cycle meter med en arduino og 4 stk 7-segment eller evt et LCD display? Dette så jo interessant ut Noen som vet om dette er mulig med boArudino? Det er akkurat samme krets og bootloader ut i fra det jeg kan se. Så det er ingen grunn til at det ikke skulle virke. Jeg tenkte på sånn om det er nok pinner, og "input for external interrupt" Hadde vært kult og fått til (Har et PWM-signal jeg gjerne skulle målt....) EDIT: hvor mange tilkoblinger mot Arduinoen har et slik display? Endret 9. mai 2011 av Puke Nukem Lenke til kommentar
Josten Skrevet 9. mai 2011 Del Skrevet 9. mai 2011 Koden blir vel omtrent som dette: void setup(){ Serial.begin(9600); } byte received; void loop(){ if(Serial.available()>0){ received = Serial.read(); } //gjøre noe lurt med received her } Jeg har prøvd å sette "received" som lysstyrken på en lysdiode, men det ser ikke ut til å gi så mye mening. Når jeg trykker på "Rec" begynner lysdioden å blinke litt tilfeldig, uavhengig av om jeg spiller av musikk på PC-en, eller om jeg blåser i mikrofonen. Hvis du bruker programmet med musikk (andre posten min), må du sette Serial.begin(250000). Da to byte sammen er en sample, bør de settes sammen til feks en unsigned int (antar at mest signifikante kommer først). unsigned int sample = Serial.read(); sample = sample << 8; sample += Serial.read(); Jeg kikket litt på dataene selv, og var litt usikker på om ting funket som det skulle (Lydkortet har vært litt merkelig, så tenkte det var det). Hvis ting ikke gir mening med denne fiksen her heller, så får du si ifra. Lenke til kommentar
Meh. Skrevet 9. mai 2011 Del Skrevet 9. mai 2011 (endret) Hvis du bruker programmet med musikk (andre posten min), må du sette Serial.begin(250000). Da to byte sammen er en sample, bør de settes sammen til feks en unsigned int (antar at mest signifikante kommer først). unsigned int sample = Serial.read(); sample = sample << 8; sample += Serial.read(); Jeg kikket litt på dataene selv, og var litt usikker på om ting funket som det skulle (Lydkortet har vært litt merkelig, så tenkte det var det). Hvis ting ikke gir mening med denne fiksen her heller, så får du si ifra. Det kan se ut som om vedien blir påvirket litt av musikk eller aktivitet rundt mikrofonen. Problemet er at verdien varierer veldig selv om musikken er av, noe som gjør det vanskelig å avgjøre om det faktisk er musikken som påvirker, eller om det er noe helt annet. Normalt vil lysdioden være av eller i hvert fall veldig svak når musikken er lav eller av, men ved denne metoden ser den ut til å være veldig variabel. Endret 9. mai 2011 av Meh. Lenke til kommentar
Puke Nukem Skrevet 12. mai 2011 Del Skrevet 12. mai 2011 Da kommer et 16x2 LDC-display i posten om ikke så lenge håper jeg... Lenke til kommentar
Puke Nukem Skrevet 19. mai 2011 Del Skrevet 19. mai 2011 Da er LCD mottatt og prøvd ut! JEg har en rart problem her, ved bruk av diverse tegn i første rute i andre linje, så får jeg en eller flere streker som går bortover hele andre linje... Problemet forsvinner om jeg flytter alt ett hakk til venstre, altså ikke bruker første tegnet på linja. Lenke til kommentar
Meh. Skrevet 19. mai 2011 Del Skrevet 19. mai 2011 (endret) Bruker du et display med seriell tilkobling eller parallell? Noen av de med seriell-konverter (multiplekser?) på baksiden har et par brytere som må være på for at skjermen skal funke normalt. Jeg tror bryterne er for en slags testmodus som printer en standardmelding på skjermen. Endret 19. mai 2011 av Meh. Lenke til kommentar
Puke Nukem Skrevet 19. mai 2011 Del Skrevet 19. mai 2011 Ikke noe brytere som jeg kan se... Denne LCDen er det: http://www.adafruit.com/products/181 Lenke til kommentar
Markaren Skrevet 5. juli 2011 Del Skrevet 5. juli 2011 I dag fikk jeg endelig gjort ferdig prosjektet mitt som gikk ut på å styre en "radiostyrt" lekebil via bluetooth, ved å bruke accelometeret på en mobil. Brukte en Arduino Uno, blueSmirf silver bluetooth modul og en SN754410 Quad Half H-Bridge + to random motorer som sto på en gammel lekebil. Brukte det gamle chassiet. Kodet telefonen ved hjelp av Google App Inventor. Kan bistå med kode for nybegynnere som er interessert i å få til det samme Lenke til kommentar
Meh. Skrevet 5. juli 2011 Del Skrevet 5. juli 2011 (endret) Høres ut som et morsomt prosjekt. Jeg har ingen planer om å gjøre det samme, men vil gjerne se programkoden. Endret 5. juli 2011 av Meh. Lenke til kommentar
Markaren Skrevet 5. juli 2011 Del Skrevet 5. juli 2011 (endret) Høres ut som et morsomt prosjekt. Jeg har ingen planer om å gjøre det samme, men vil gjerne se programkoden. const int enableFront = 9; //pwm, H-bridge motor2-framhjul const int enableBack = 10; //pwm, H-bridge motor1-bakhjul const int right = 2; const int left = 3; //pwm const int backward = 5; //pwm const int forward = 6; //pwm int key; void setup() { Serial.begin(115200); pinMode(left, OUTPUT); pinMode(right, OUTPUT); pinMode(forward, OUTPUT); pinMode(backward, OUTPUT); pinMode(enableFront, OUTPUT); pinMode(enableBack, OUTPUT); digitalWrite(enableFront, HIGH); digitalWrite(enableBack, HIGH); } void loop() { if (Serial.available() ) { key = Serial.read(); Serial.write('key'); //unødvendig, brukt til debugging if (key == '0') { stop(); //disable motor } else if (key == '+') { start(); //enable motor } else if (key == '1') { runForwards(1); } else if (key == '2') { runForwards(2); } else if (key == '3') { runForwards(3); } else if (key == '4') { runBackwards(1); } else if (key == '5') { runBackwards(2); } else if (key == '6') { runBackwards(3); } else if (key == '7') { turnLeft(true); } else if (key == '8') { turnLeft(false); // turnRight(false) gjør samme nytten } else if (key == '9') { turnRight(true); } } } void stop() { digitalWrite(enableBack, LOW); } void start() { digitalWrite(enableBack, HIGH); } void changeVoltageBack(boolean f, boolean b) { if (f == true) { digitalWrite(forward, HIGH); } else { digitalWrite(forward, LOW); } if (b == true) { digitalWrite(backward, HIGH); } else { digitalWrite(backward, LOW); } } void changeVoltageFront(boolean l, boolean r) { if (l == true) { digitalWrite(left, HIGH); } else { digitalWrite(left, LOW); } if (r == true) { digitalWrite(right, HIGH); } else { digitalWrite(right, LOW); } } void runForwards(int speed) { if (speed > 0 && speed < 4) { analogWrite(enableBack, map(speed, 0,3,0,255)); //pwm for variabel fart if (speed == 0) { changeVoltageBack(false, false); } else { changeVoltageBack(true, false); } } } void runBackwards (int speed) { if (speed > 0 && speed < 4) { analogWrite(enableBack, map(speed, 0,3,0,255)); //pwm for variabel fart if (speed == 0) { changeVoltageBack(false, false); } else { changeVoltageBack(false, true); } } } void turnLeft(boolean turn) { if (turn == true) { changeVoltageFront(true, false); } else { changeVoltageFront(false, false); } } void turnRight(boolean turn) { if (turn == true) { changeVoltageFront(false, true); } else { changeVoltageFront(false, false); } } Android appen min sender enkelt og greit ASCII karakterer til Arduinoen ved å lese av Y og Z verdiene til accelometeret. Siden den er kodet i App Inventor er det ikke så enkelt å gjengi den. Endret 5. juli 2011 av Markaren Lenke til kommentar
Oxygen 07-12 Skrevet 5. juli 2011 Del Skrevet 5. juli 2011 http://www.robonor.no/mag/ Lenke til kommentar
AVRsia Skrevet 6. juli 2011 Del Skrevet 6. juli 2011 Da er LCD mottatt og prøvd ut! JEg har en rart problem her, ved bruk av diverse tegn i første rute i andre linje, så får jeg en eller flere streker som går bortover hele andre linje... Problemet forsvinner om jeg flytter alt ett hakk til venstre, altså ikke bruker første tegnet på linja. Har du en kode jeg kunne fått sett ? Jeg har flere sånne diplay i drift. Litt hjemmelagde koder og litt funnet Lenke til kommentar
Puke Nukem Skrevet 6. juli 2011 Del Skrevet 6. juli 2011 Har du en kode jeg kunne fått sett ? Jeg har flere sånne diplay i drift. Litt hjemmelagde koder og litt funnet Det skjer uansett hvilke koder jeg bruker... skal finne frem kodeeksempel... SElv med standard "hello world" skjer dette, jeg har dog LCD koblet til andre pinner.. /* LiquidCrystal Library - Hello World Demonstrates the use a 16x2 LCD display. The LiquidCrystal library works with all LCD displays that are compatible with the Hitachi HD44780 driver. There are many of them out there, and you can usually tell them by the 16-pin interface. This sketch prints "Hello World!" to the LCD and shows the time. The circuit: * LCD RS pin to digital pin 12 * LCD Enable pin to digital pin 11 * LCD D4 pin to digital pin 5 * LCD D5 pin to digital pin 4 * LCD D6 pin to digital pin 3 * LCD D7 pin to digital pin 2 * LCD R/W pin to ground * 10K resistor: * ends to +5V and ground * wiper to LCD VO pin (pin 3) Library originally added 18 Apr 2008 by David A. Mellis library modified 5 Jul 2009 by Limor Fried (http://www.ladyada.net) example added 9 Jul 2009 by Tom Igoe modified 22 Nov 2010 by Tom Igoe This example code is in the public domain. http://www.arduino.cc/en/Tutorial/LiquidCrystal */ // include the library code: #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.print("hello, world!"); } void loop() { // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 1); // print the number of seconds since reset: lcd.print(millis()/1000); } Lenke til kommentar
Formula90 Skrevet 28. juli 2011 Del Skrevet 28. juli 2011 fikk en arduino uno og endel komponeter i posten idag = D aldri holt på med det før, prøvde å lage en led matrix, 3x3, men sjønte ikke helt hvordan jeg skulle lage kodene, har ikke helt sjønt hvordan jeg velger hvilken led jeg skal ha på, prøvde bare random å endre HIGH og LOW, men vart ikke noe smartere. noen som kan forklare meg hvordan det funker egentlig? Lenke til kommentar
Markaren Skrevet 29. juli 2011 Del Skrevet 29. juli 2011 (endret) Du bør nok lære deg basicen i programeringsspråk som C/C++ eller java. Da blir alt mye lettere. Er ikke så mye som skal til, men for å svare på spørsmålet: /** * Rask sketch som jeg skrev uten å ha testen den selv **/ const int ledPin = 9; //f.eks, kan vere hvilken som helst pin unntatt 0 og 1. Kan selfølgelig legge til flere. void setup() { pinMode(ledPin, OUTPUT); // pin 9 satt som OUTPUT } void loop() { digitalWrite(ledPin, HIGH); //slå på lyset delay(1000); //vent 1000 millisekund digitalWrite(ledPin, LOW); //slå av lyset delay(1000); //vent 1000 millisekund //denne koden er for å dimme lyset ned og opp: NB! Krever pwm pin, merket med ~ for(int i = 0; i < 255; i++) { analogWrite(ledPin, i); //øker lysstyrken med en faktor mellom 0 og 255 (0 - 5V) hvert 100 millisekund delay(100); } for (int i = 255; i > 0; i--) { analogWrite(ledPin, i); //senker lysstyrken med en faktor mellom 0 og 255 (0 - 5V) hvert 100 millisekund delay(100); } } Endret 29. juli 2011 av Markaren Lenke til kommentar
Formula90 Skrevet 29. juli 2011 Del Skrevet 29. juli 2011 (endret) ahh takker! Ja fant ut av det dære jeg å, så tror jeg skal kjøpe C/C++ bok, men fram til da tenkte jeg at jeg kan bruke youtube, å se tutorials eller noe sånt, men fant ikke noe bra filmer om det, iværtfall ikke som har me dette å gjøre?? Endret 29. juli 2011 av Formula90 Lenke til kommentar
Meh. Skrevet 29. juli 2011 Del Skrevet 29. juli 2011 (endret) Hvis du ikke har gjort det enda, kan det være lurt å ta en titt på de forskjellige programmene og funksjonene som finnes på arduino.cc. Endret 29. juli 2011 av Meh. Lenke til kommentar
Formula90 Skrevet 30. juli 2011 Del Skrevet 30. juli 2011 ja var en start var mye nyttig info der 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å