Tkse Skrevet 27. mars 2015 Del Skrevet 27. mars 2015 Jeg holder på å bygge et tripwire system, og trenger litt hjelp. Jeg har nå laget 1 kode for sensoren jeg bruker, og har en kode for alarmlyden jeg ønsker å bruke. Jeg trenger å få kodene inn i hverandre. Noen som kan hjelpe meg? Koden for alarmlyden: #define ALARM 3 float sinVal; int toneVal; void setup() { pinMode(ALARM, OUTPUT ); } void loop() { for (int x=0; x<180; x++) { // convert degrees to radians then obtain sin value sinVal = (sin(x*(3.1412/700))); // generate a frequency from the sin value toneVal = 2000+(int(sinVal*1000)); tone(ALARM, toneVal); } delay(350); } Koden for sensoren: /* Arduino Starter Kit example Project 6 - Light Theremin This sketch is written to accompany Project 6 in the Arduino Starter Kit Parts required: photoresistor 10 kilohm resistor piezo Created 13 September 2012 by Scott Fitzgerald http://arduino.cc/starterKit This example code is part of the public domain */ // variable to hold sensor value int sensorValue; // variable to calibrate low value int sensorLow = 1023; // variable to calibrate high value int sensorHigh = 0; // LED pin const int ledPin = 13; const int irLedPin = 12; float voltage = 0; int i=0; void setup() { // Make the LED pin an output and turn it on pinMode(ledPin, OUTPUT); pinMode(irLedPin, OUTPUT); digitalWrite(ledPin, HIGH); // calibrate for the first five seconds after program runs while (millis() < 5000) { // record the maximum sensor value sensorValue = analogRead(A0); digitalWrite(irLedPin,HIGH); if (sensorValue > sensorHigh) { sensorHigh = sensorValue; } // record the minimum sensor value digitalWrite(irLedPin,LOW); if (sensorValue < sensorLow) { sensorLow = sensorValue; } } // turn the LED off, signaling the end of the calibration period digitalWrite(ledPin, LOW); Serial.begin(9600); } void loop() { digitalWrite(4, HIGH); if(analogRead(0) > 530){ digitalWrite(8, HIGH); } //read the input from A0 and store it in a variable sensorValue = analogRead(A0); // map the sensor values to a wide range of pitches int pitch = map(sensorValue, sensorLow, sensorHigh, 50, 4000); if(i>=100){ digitalWrite(irLedPin, HIGH); } else if(i>=200){ digitalWrite(irLedPin, LOW); i=0; } voltage = sensorValue*5.0/1024.0; Serial.print(sensorValue); Serial.print(" "); Serial.print(pitch); Serial.print(" "); Serial.println(voltage); // play the tone for 20 ms on pin 8 tone(8, pitch, 20); // wait for a moment i++; delay(10); } Noen som har noen tanker? Jeg har ingen anelse angående dette... Lenke til kommentar
andershf Skrevet 27. mars 2015 Del Skrevet 27. mars 2015 (endret) Jeg holder på å bygge et tripwire system, og trenger litt hjelp. Jeg har nå laget 1 kode for sensoren jeg bruker, og har en kode for alarmlyden jeg ønsker å bruke. Jeg trenger å få kodene inn i hverandre. Noen som kan hjelpe meg? Koden for alarmlyden: #define ALARM 3 float sinVal; int toneVal; void setup() { pinMode(ALARM, OUTPUT ); } void loop() { for (int x=0; x<180; x++) { // convert degrees to radians then obtain sin value sinVal = (sin(x*(3.1412/700))); // generate a frequency from the sin value toneVal = 2000+(int(sinVal*1000)); tone(ALARM, toneVal); } delay(350); } Koden for sensoren: /* Arduino Starter Kit example Project 6 - Light Theremin This sketch is written to accompany Project 6 in the Arduino Starter Kit Parts required: photoresistor 10 kilohm resistor piezo Created 13 September 2012 by Scott Fitzgerald http://arduino.cc/starterKit This example code is part of the public domain */ // variable to hold sensor value int sensorValue; // variable to calibrate low value int sensorLow = 1023; // variable to calibrate high value int sensorHigh = 0; // LED pin const int ledPin = 13; const int irLedPin = 12; float voltage = 0; int i=0; void setup() { // Make the LED pin an output and turn it on pinMode(ledPin, OUTPUT); pinMode(irLedPin, OUTPUT); digitalWrite(ledPin, HIGH); // calibrate for the first five seconds after program runs while (millis() < 5000) { // record the maximum sensor value sensorValue = analogRead(A0); digitalWrite(irLedPin,HIGH); if (sensorValue > sensorHigh) { sensorHigh = sensorValue; } // record the minimum sensor value digitalWrite(irLedPin,LOW); if (sensorValue < sensorLow) { sensorLow = sensorValue; } } // turn the LED off, signaling the end of the calibration period digitalWrite(ledPin, LOW); Serial.begin(9600); } void loop() { digitalWrite(4, HIGH); if(analogRead(0) > 530){ digitalWrite(8, HIGH); } //read the input from A0 and store it in a variable sensorValue = analogRead(A0); // map the sensor values to a wide range of pitches int pitch = map(sensorValue, sensorLow, sensorHigh, 50, 4000); if(i>=100){ digitalWrite(irLedPin, HIGH); } else if(i>=200){ digitalWrite(irLedPin, LOW); i=0; } voltage = sensorValue*5.0/1024.0; Serial.print(sensorValue); Serial.print(" "); Serial.print(pitch); Serial.print(" "); Serial.println(voltage); // play the tone for 20 ms on pin 8 tone(8, pitch, 20); // wait for a moment i++; delay(10); } Man kan si at det er 3 deler av koden. Først (før 'void setup') der du definerer ting osv. Så har du det som er inni void setup() {} og til slutt det som er inni void loop() {}. Litt dårlig forklart kanskje, men det er ikke så vanskelig. Jeg satt sammen de to kodene for deg, men om det fungerer vet ikke jeg. Har ikke studert koden, men har verifisert den i Arduino IDE uten feil // --- ALARM --- #define ALARM 3 float sinVal; int toneVal; // --- SENSOR --- // variable to hold sensor value int sensorValue; // variable to calibrate low value int sensorLow = 1023; // variable to calibrate high value int sensorHigh = 0; // LED pin const int ledPin = 13; const int irLedPin = 12; float voltage = 0; int i=0; void setup() { // --- ALARM --- pinMode(ALARM, OUTPUT ); // --- SENSOR --- // Make the LED pin an output and turn it on pinMode(ledPin, OUTPUT); pinMode(irLedPin, OUTPUT); digitalWrite(ledPin, HIGH); // calibrate for the first five seconds after program runs while (millis() < 5000) { // record the maximum sensor value sensorValue = analogRead(A0); digitalWrite(irLedPin,HIGH); if (sensorValue > sensorHigh) { sensorHigh = sensorValue; } // record the minimum sensor value digitalWrite(irLedPin,LOW); if (sensorValue < sensorLow) { sensorLow = sensorValue; } } // turn the LED off, signaling the end of the calibration period digitalWrite(ledPin, LOW); Serial.begin(9600); } void loop() { // --- SENSOR --- digitalWrite(4, HIGH); if(analogRead(0) > 530){ digitalWrite(8, HIGH); } //read the input from A0 and store it in a variable sensorValue = analogRead(A0); // map the sensor values to a wide range of pitches int pitch = map(sensorValue, sensorLow, sensorHigh, 50, 4000); if(i>=100){ digitalWrite(irLedPin, HIGH); } else if(i>=200){ digitalWrite(irLedPin, LOW); i=0; } voltage = sensorValue*5.0/1024.0; Serial.print(sensorValue); Serial.print(" "); Serial.print(pitch); Serial.print(" "); Serial.println(voltage); // play the tone for 20 ms on pin 8 tone(8, pitch, 20); // wait for a moment i++; delay(10); // --- ALARM --- for (int x=0; x<180; x++) { // convert degrees to radians then obtain sin value sinVal = (sin(x*(3.1412/700))); // generate a frequency from the sin value toneVal = 2000+(int(sinVal*1000)); tone(ALARM, toneVal); } delay(350); } Endret 27. mars 2015 av andershf Lenke til kommentar
BigJackW Skrevet 30. mars 2015 Del Skrevet 30. mars 2015 (endret) Vet jeg har spurt om dette før men prøver igjen. Dog med litt annen kode nå, men målet er det samme. Planen er at jeg skal styre en steppermotor (0-360°) alt etter hvor mange pulser som lese av arduinoen. Jeg bruker en frekvensgenerator i sweep-mode som genererer firkantpulser fra 1Hz til 2kHz i løpet av 10 sekunder før den begynner på 1Hz igjen. Dette ser ut til å fungere sånn nogen lunde. Ser kanskje at den stepper litt ujevnt. Kjører med 1/2 steg atm. Når motoren stepper tilbake til null er "off-tiden" mellom pulsene rundt ~22µS mens on-tiden er 3ms. Når den stepper "fremover" så er on-tiden også 3ms mens off-tiden kan variere fra ~22µs til så mye som 300ms. Noen som ser hva som skjer og hva som ikke skjer? Burde ikke "milliesBetweenSteps" sørge for at det skal være litt mer tid mellom pulsene? Håper noen har peil. // CONSTANTS const int speedoDir = 8; // Pin speedostepper direction const int speedoStep = 5; // Pin speedostepper step const int stepsPerRev = 26 * 2; // Steps per rev times stepping factor const int updateInterval = 25; // milliseconds const int millisBetweenSteps = 25; // milliseconds const int millisStepWidth = 3; const int speedTeeth = 48; // Number of pulses per rotation const int maxSpeed = 240; // Max cluster speed const int tireDiameter = 500; // Diameter of tire (mm) const float tireCircumference = PI * tireDiameter; // VARIABLES int pos = 0; int val = 0; float currentSpeed = 0; int speedoStepState = LOW; unsigned long curMillis = 0; unsigned long prevStepMillis = 0; unsigned long prevStepWidthMillis = 0; unsigned long lastUpdate = 0; unsigned long lastUpdate2 = 0; volatile int speedPulseCount = 0; int speedPulseCount2 = 0; void setup() { Serial.begin(9600); pinMode(speedoDir, OUTPUT); pinMode(speedoStep, OUTPUT); attachInterrupt(0, speedCount, FALLING); } void loop() { curMillis = millis(); if ( (curMillis - lastUpdate) >= updateInterval ) { // Save variables noInterrupts(); speedPulseCount2 = speedPulseCount; lastUpdate2 = lastUpdate; speedPulseCount = 0; lastUpdate += updateInterval; interrupts(); // Speed in m/s currentSpeed = (speedPulseCount2 * tireCircumference) / (speedTeeth * (curMillis - lastUpdate2)); // Speed in km/h currentSpeed = (currentSpeed * 36) / 10; currentSpeed = constrain(currentSpeed, 0, maxSpeed); val = map( currentSpeed, 0, maxSpeed, 0, stepsPerRev ); speedPulseCount = 0; } // Speed difference bigger than 2? if ( abs(val - pos) > 2 ) { if ( (val - pos) > 0 ) { digitalWrite(speedoDir, LOW); speedStep(); pos++; } if ( (val - pos) < 0 ) { digitalWrite(speedoDir, HIGH); speedStep(); pos--; } } } void speedStep() { if (curMillis - prevStepMillis >= millisBetweenSteps) { prevStepMillis += millisBetweenSteps; digitalWrite(speedoStep, HIGH); delay(millisStepWidth); digitalWrite(speedoStep, LOW); } } void speedCount() { speedPulseCount++; } Endret 30. mars 2015 av BigJackW Lenke til kommentar
iam99pk Skrevet 16. april 2015 Del Skrevet 16. april 2015 Artig den derre google linken Glemte å nevne at jeg har vært innom Instructables, men føler at jeg ikke helt klarer å holde hodet kaldt når det skal oversettes fra Engelsk til Norsk, om jeg kan si det på den måten. Tok utgangspunkt i denne på Instructables og lagde en teining til deg (Ligger i spoiler) Bredboard Koblingsskjema Og dette er koden som ble brukt på Instructables: void setup() { pinMode(4, OUTPUT); pinMode(13, OUTPUT); } void loop(){ digitalWrite(4, HIGH); if(analogRead(0) < 750){ digitalWrite(13, HIGH); } else{ digitalWrite(13, LOW); } } Husk å sjekke hvilken spenning laseren din skal ha og finn ut strømtrekk. Utgangen på Arduino, pin4 i dette tilfellet, gir 5V og maks 40mA Og her er koden for å lese verdien fra photoresistoren i tilfelle du trenger å justere den void setup() { pinMode(4, OUTPUT); Serial.begin(9600); } void loop(){ digitalWrite(4, HIGH); Serial.println(analogRead(0)); } satte å vurdete å kjøpe slike resistorer og 555 ic idag... men fant ikke noe kult å lage med det så gjore ikke det... men så kommer jeg å leser dette rett før eg ska legge meg då bli d å kjøpe inn det også! men tengte å ta det ett hakk videre? går det ann å få et webcam til å skru seg på å ta bilde/vidio når "alarmen" går? første som eg tengte på va å koble webcamet til rapsberrypi som lagrer det på et minnekort? (vet ikke om arduino har noe slikt?) Lenke til kommentar
andershf Skrevet 17. april 2015 Del Skrevet 17. april 2015 Artig den derre google linken Glemte å nevne at jeg har vært innom Instructables, men føler at jeg ikke helt klarer å holde hodet kaldt når det skal oversettes fra Engelsk til Norsk, om jeg kan si det på den måten. Tok utgangspunkt i denne på Instructables og lagde en teining til deg (Ligger i spoiler) Bredboard Koblingsskjema Og dette er koden som ble brukt på Instructables: void setup() { pinMode(4, OUTPUT); pinMode(13, OUTPUT); } void loop(){ digitalWrite(4, HIGH); if(analogRead(0) < 750){ digitalWrite(13, HIGH); } else{ digitalWrite(13, LOW); } } Husk å sjekke hvilken spenning laseren din skal ha og finn ut strømtrekk. Utgangen på Arduino, pin4 i dette tilfellet, gir 5V og maks 40mA Og her er koden for å lese verdien fra photoresistoren i tilfelle du trenger å justere den void setup() { pinMode(4, OUTPUT); Serial.begin(9600); } void loop(){ digitalWrite(4, HIGH); Serial.println(analogRead(0)); } satte å vurdete å kjøpe slike resistorer og 555 ic idag... men fant ikke noe kult å lage med det så gjore ikke det... men så kommer jeg å leser dette rett før eg ska legge meg då bli d å kjøpe inn det også! men tengte å ta det ett hakk videre? går det ann å få et webcam til å skru seg på å ta bilde/vidio når "alarmen" går? første som eg tengte på va å koble webcamet til rapsberrypi som lagrer det på et minnekort? (vet ikke om arduino har noe slikt?) Arduino er ikke i stand til å behanle video/bilder i seg selv, så vil nok tro at Raspberry Pi er et bedre alternativ som du sier Lenke til kommentar
iam99pk Skrevet 23. april 2015 Del Skrevet 23. april 2015 noen som er god på å programere på arduino og kunne tenkt seg å lære meg det? eventuelt funnet noen greie sider/vidioer? Lenke til kommentar
Moskus Skrevet 23. april 2015 Del Skrevet 23. april 2015 Uhm... http://www.arduino.cc/er et fint sted å begynne. Lenke til kommentar
iam99pk Skrevet 7. mai 2015 Del Skrevet 7. mai 2015 jeg skal lage en 8x8x8 led cube og har funnet dette koblingskjemaet: http://www.pyroelectro.com/projects/8x8x8_led_cube/img/8x8x8_schematic.png og lurte på hvilken side (nærmest vcc eller gnd) skal 0,1u capacitorsene stå på? og kan jeg bare koble videre etter de kondensatorene til vcc og gnd inn? altså der med "power circuit" og koble videre etter den 10u? Lenke til kommentar
ZeRKoX Skrevet 7. mai 2015 Del Skrevet 7. mai 2015 De kondensatorene skal stå så nerme IC-ene som mulig (en stk per IC), og de skal stå helt inntil VCC. Ene benet på kondensatoren skal kobles til VCC på IC-en, og det andre til GND. De er der for å glatte ut rippel i spenningen som oppstår når du kjapt endrer strømtrekket, som en gjerne ofte gjør i en LED-Cube siden diodene skrus av og på hele tiden. Lenke til kommentar
JacEr Skrevet 7. mai 2015 Del Skrevet 7. mai 2015 Hei. Har planer om å anskaffe meg en Arduino for å lære mer om elektronikk og programmering. Sist gang jeg var borti elektronikk på komponentnivå var på videregående for ca 20 år siden. Programmering har jeg aldri vært borti, men etter å ha tullet rundt litt på nettet, virker Arduino-plattformen som et utmerket sted for å begynne og lære. Trenger litt hjelp for hvordan best komme i gang, med tanke på hvilken Arduino jeg skal kjøpe. Startsettet som henvises til på side 41 i denne tråden virker kjempeflott, men ser også at det er kommet ut et nytt brett som heter Arduino Zero Pro. Er det noen som har erfaringer med dette brettet, vet om det ville være et bedre/verre kjøp enn Uno Rev3? Har også planer om å kjøpe boka til Massimo Benzi, "Getting started with Arduino". Hvis dere har andre tips å komme med til en nybegynner (enten det gjelder innkjøp eller online guider), setter jeg stor pris på alle innspill. Lenke til kommentar
andershf Skrevet 7. mai 2015 Del Skrevet 7. mai 2015 Hei. Har planer om å anskaffe meg en Arduino for å lære mer om elektronikk og programmering. Sist gang jeg var borti elektronikk på komponentnivå var på videregående for ca 20 år siden. Programmering har jeg aldri vært borti, men etter å ha tullet rundt litt på nettet, virker Arduino-plattformen som et utmerket sted for å begynne og lære. Trenger litt hjelp for hvordan best komme i gang, med tanke på hvilken Arduino jeg skal kjøpe. Startsettet som henvises til på side 41 i denne tråden virker kjempeflott, men ser også at det er kommet ut et nytt brett som heter Arduino Zero Pro. Er det noen som har erfaringer med dette brettet, vet om det ville være et bedre/verre kjøp enn Uno Rev3? Har også planer om å kjøpe boka til Massimo Benzi, "Getting started with Arduino". Hvis dere har andre tips å komme med til en nybegynner (enten det gjelder innkjøp eller online guider), setter jeg stor pris på alle innspill. Jeg tror Arduino Uno vil være et godt alternativ til en nybegynner til tross for at Zero er "den nye". Den vil være mer enn god nok til svært mange nybegynnerprosjekter - og det koster ikke mer enn 30 kr for en kopi på eBay Lenke til kommentar
iam99pk Skrevet 9. mai 2015 Del Skrevet 9. mai 2015 De kondensatorene skal stå så nerme IC-ene som mulig (en stk per IC), og de skal stå helt inntil VCC. Ene benet på kondensatoren skal kobles til VCC på IC-en, og det andre til GND. De er der for å glatte ut rippel i spenningen som oppstår når du kjapt endrer strømtrekket, som en gjerne ofte gjør i en LED-Cube siden diodene skrus av og på hele tiden. okay takk for svar! lurte på om dette gikk da? http://gyazo.com/6949e8492b359ad5c5ee988f2e410a07 også går det ann å gjør det slik med power? http://gyazo.com/f65f518cd85c1c1f83162e524b2a909a hvis du forstår? (har ikke laget mine egne kretskort før så har lyst å prøve det ) Lenke til kommentar
ZeRKoX Skrevet 11. mai 2015 Del Skrevet 11. mai 2015 okay takk for svar! lurte på om dette gikk da? http://gyazo.com/6949e8492b359ad5c5ee988f2e410a07 Det bør gå helt fint, gitt at den pinnen med firkantet loddeland er VCC (jeg må innrømme at det er litt for lenge siden jeg har lekt med slikt til å se det på stående fot... ) Regner og med at det oppsettet for power bør virke fint. De er for litt grovere glatting av spenningen, sett i forhold til de små kondensatorene. Lenke til kommentar
iam99pk Skrevet 11. mai 2015 Del Skrevet 11. mai 2015 okay takk for svar! lurte på om dette gikk da? http://gyazo.com/6949e8492b359ad5c5ee988f2e410a07 Det bør gå helt fint, gitt at den pinnen med firkantet loddeland er VCC (jeg må innrømme at det er litt for lenge siden jeg har lekt med slikt til å se det på stående fot... ) Regner og med at det oppsettet for power bør virke fint. De er for litt grovere glatting av spenningen, sett i forhold til de små kondensatorene. okay jepp den firkanten er VCC men er det noen som kan hjelpe meg med å finne ut hvilken transistorer jeg trenger til forskjellinge ting som f.eks led matrix? er det slikt at en led trenger 20mA (er det jeg har funnet ut) så er det å + på hitt over hvor mange du lager hitt? så f.eks 8x48 led matrix så er der 8 transistor (en for hver rad) så blir det 20*48=960mA? følte det ble så mye... også lurte jeg på om det går ann å sette 2 stykk 2N2222 transistors (som tåler 800mA) i paralell så tåler de 1600mA? ser at de har gjort det i 8x8x8 led cuben Lenke til kommentar
Professor Balthazar Skrevet 13. mai 2015 Del Skrevet 13. mai 2015 (endret) En vanlig 3-5mm LED lyser vel svakt allerede med rundt 5mA og overlever sikkert en stund med 40mA. Hvilken formotstand (og strøm) du bør bruke for å få sånn akkurat passe med lys kan dessuten variere litt fra produsent til produsent og alt etter hvilken farge du bruker på LED'ene. Om du starter med å kalkulere 10-15mA og 2V spenning over LED'en så har du en start. Lyser det svakt så reduserer du motstandsverdien, lyser det for sterkt så øker du verdien. En Arduino er vel laget for å kunne gi maks 40mA ut på en 5V digital utgang. Både Arduinoen og LED-pæren vil således akkurat såvidt tåle en direktekobling av LED (uten formotstand), men i lengden er dette en noe utrygg løsning som ikke er å anbefale. Dessuten har de fleste Arduino-kortene et oppgitt maks samlet strømtrekk på rundt 500mA. Oppsettet ditt med 960mA belastning vil derfor betinge at du bruker en ekstern strømkilde som kan mate LED'ene via transistorer. 2N2222 og lignende TD-92 transistorer pleier å tåle ca. 400-800mA. BD139 og lignende TD-220 transistorer pleier å tåle litt mer (rundt 1,5A). Dersom du trenger noe enda kraftigere så ender du opp med transistorer som har tykkere ben, trenger mer plass og som ofte også trenger kjøleribber (mye pæs - så forsøk å unngå det). Vær oppmerksom på at dersom en transistir blir varm så trenger det ikke å bety at lasten er for stor. Det kan veldig ofte være at Ib strømmen er for liten til å åpne Ic 100%. Dette ressulterer i en ganske stor spenning mellom Collektor og Emitter, noe som gjør at en stor mengde effekt går opp i varme internt i transistoren (husk P=U*U/I). Endret 13. mai 2015 av Professor Balthazar Lenke til kommentar
iam99pk Skrevet 13. mai 2015 Del Skrevet 13. mai 2015 okay takk for et godt svar! ja vet at arduino kan ikke gi alt selv så tengte å kjøre med en egen stømforsyning.. men så hvis jeg forstår rett så ganger du bare strømmen med hvor mange led du bruker? men hvis mine elektro kunnskaper er rett så kan du sette 2 transistor i paralell og de leder de dobbel? Lenke til kommentar
iam99pk Skrevet 15. mai 2015 Del Skrevet 15. mai 2015 (endret) hei! jeg bare lurte på om noen kunne (eller si hva jeg må gjøre) forandre denne koden slik at rows blir negativ anodes istedenfor positiv? int x;int y;int latchPin1 = 5; //Arduino pin connected to blue 12 RCLK of 74HC595int clockPin1 = 6; //Arduino pin connected to green 11 SRCLK of 74HC595int dataPin1 = 7; //Arduino pin connected to violet 14 SER of 74HC595//-- Rows (Positive Anodes) --int latchPin2 = 9; //Arduino pin connected to yellow Latch 12 RCLK of 74HC595int clockPin2 = 10; //Arduino pin connected to white Clock 11 SRCLK of 74HC595int dataPin2 = 8; //Arduino pin connected to grey Data 14 SER of 74HC595//=== B I T M A P ===//Bits in this array represents one LED of the matrix// 8 is # of rows, 7 is # of LED matrix we havebyte bitmap[8][34]; // Change the 7 to however many matrices you want to use.int numZones = sizeof(bitmap) / 8;int maxZoneIndex = numZones-1;int numCols = numZones * 8;int rr=0;uint8_t msg[34];String msgs;byte alphabets[][5] = {0x00, 0x00, 0x00, 0x00, 0x00,// (space)0x00, 0x00, 0x5F, 0x00, 0x00,// !0x00, 0x07, 0x00, 0x07, 0x00,// "0x14, 0x7F, 0x14, 0x7F, 0x14,// #0x24, 0x2A, 0x7F, 0x2A, 0x12,// $0x23, 0x13, 0x08, 0x64, 0x62,// %0x36, 0x49, 0x55, 0x22, 0x50,// &0x00, 0x05, 0x03, 0x00, 0x00,// '0x00, 0x1C, 0x22, 0x41, 0x00,// (0x00, 0x41, 0x22, 0x1C, 0x00,// )0x08, 0x2A, 0x1C, 0x2A, 0x08,// *0x08, 0x08, 0x3E, 0x08, 0x08,// +0x00, 0x50, 0x30, 0x00, 0x00,// ,0x08, 0x08, 0x08, 0x08, 0x08,// -0x00, 0x60, 0x60, 0x00, 0x00,// .0x20, 0x10, 0x08, 0x04, 0x02,// /0x3E, 0x51, 0x49, 0x45, 0x3E,// 00x00, 0x42, 0x7F, 0x40, 0x00,// 10x42, 0x61, 0x51, 0x49, 0x46,// 20x21, 0x41, 0x45, 0x4B, 0x31,// 30x18, 0x14, 0x12, 0x7F, 0x10,// 40x27, 0x45, 0x45, 0x45, 0x39,// 50x3C, 0x4A, 0x49, 0x49, 0x30,// 60x01, 0x71, 0x09, 0x05, 0x03,// 70x36, 0x49, 0x49, 0x49, 0x36,// 80x06, 0x49, 0x49, 0x29, 0x1E,// 90x00, 0x36, 0x36, 0x00, 0x00,// :0x00, 0x56, 0x36, 0x00, 0x00,// ;0x00, 0x08, 0x14, 0x22, 0x41,// <0x14, 0x14, 0x14, 0x14, 0x14,// =0x41, 0x22, 0x14, 0x08, 0x00,// >0x02, 0x01, 0x51, 0x09, 0x06,// ?0x32, 0x49, 0x79, 0x41, 0x3E,// @0x7E, 0x11, 0x11, 0x11, 0x7E,// A0x7F, 0x49, 0x49, 0x49, 0x36,// B0x3E, 0x41, 0x41, 0x41, 0x22,// C0x7F, 0x41, 0x41, 0x22, 0x1C,// D0x7F, 0x49, 0x49, 0x49, 0x41,// E0x7F, 0x09, 0x09, 0x01, 0x01,// F0x3E, 0x41, 0x41, 0x51, 0x32,// G0x7F, 0x08, 0x08, 0x08, 0x7F,// H0x00, 0x41, 0x7F, 0x41, 0x00,// I0x20, 0x40, 0x41, 0x3F, 0x01,// J0x7F, 0x08, 0x14, 0x22, 0x41,// K0x7F, 0x40, 0x40, 0x40, 0x40,// L0x7F, 0x02, 0x04, 0x02, 0x7F,// M0x7F, 0x04, 0x08, 0x10, 0x7F,// N0x3E, 0x41, 0x41, 0x41, 0x3E,// O0x7F, 0x09, 0x09, 0x09, 0x06,// P0x3E, 0x41, 0x51, 0x21, 0x5E,// Q0x7F, 0x09, 0x19, 0x29, 0x46,// R0x46, 0x49, 0x49, 0x49, 0x31,// S0x01, 0x01, 0x7F, 0x01, 0x01,// T0x3F, 0x40, 0x40, 0x40, 0x3F,// U0x1F, 0x20, 0x40, 0x20, 0x1F,// V0x7F, 0x20, 0x18, 0x20, 0x7F,// W0x63, 0x14, 0x08, 0x14, 0x63,// X0x03, 0x04, 0x78, 0x04, 0x03,// Y0x61, 0x51, 0x49, 0x45, 0x43,// Z0x00, 0x00, 0x7F, 0x41, 0x41,// [0x02, 0x04, 0x08, 0x10, 0x20,// "\"0x41, 0x41, 0x7F, 0x00, 0x00,// ]0x04, 0x02, 0x01, 0x02, 0x04,// ^0x40, 0x40, 0x40, 0x40, 0x40,// _0x00, 0x01, 0x02, 0x04, 0x00,// `0x20, 0x54, 0x54, 0x54, 0x78,// a0x7F, 0x48, 0x44, 0x44, 0x38,// b0x38, 0x44, 0x44, 0x44, 0x20,// c0x38, 0x44, 0x44, 0x48, 0x7F,// d0x38, 0x54, 0x54, 0x54, 0x18,// e0x08, 0x7E, 0x09, 0x01, 0x02,// f0x08, 0x14, 0x54, 0x54, 0x3C,// g0x7F, 0x08, 0x04, 0x04, 0x78,// h0x00, 0x44, 0x7D, 0x40, 0x00,// i0x20, 0x40, 0x44, 0x3D, 0x00,// j0x00, 0x7F, 0x10, 0x28, 0x44,// k0x00, 0x41, 0x7F, 0x40, 0x00,// l0x7C, 0x04, 0x18, 0x04, 0x78,// m0x7C, 0x08, 0x04, 0x04, 0x78,// n0x38, 0x44, 0x44, 0x44, 0x38,// o0x7C, 0x14, 0x14, 0x14, 0x08,// p0x08, 0x14, 0x14, 0x18, 0x7C,// q0x7C, 0x08, 0x04, 0x04, 0x08,// r0x48, 0x54, 0x54, 0x54, 0x20,// s0x04, 0x3F, 0x44, 0x40, 0x20,// t0x3C, 0x40, 0x40, 0x20, 0x7C,// u0x1C, 0x20, 0x40, 0x20, 0x1C,// v0x3C, 0x40, 0x30, 0x40, 0x3C,// w0x44, 0x28, 0x10, 0x28, 0x44,// x0x0C, 0x50, 0x50, 0x50, 0x3C,// y0x44, 0x64, 0x54, 0x4C, 0x44,// z0x00, 0x08, 0x36, 0x41, 0x00,// {0x00, 0x00, 0x7F, 0x00, 0x00,// |0x00, 0x41, 0x36, 0x08, 0x00,// }0x08, 0x08, 0x2A, 0x1C, 0x08,// ->0x08, 0x1C, 0x2A, 0x08, 0x08 // <-};/*byte alphabets[][5] = {{65,65,65,65,65},{31, 36, 68, 36, 31},{127, 73, 73, 73, 54},{62, 65, 65, 65, 34},{127, 65, 65, 34, 28},{127, 73, 73, 65, 65},{127, 72, 72, 72, 64},{62, 65, 65, 69, 38},{127, 8, 8, 8, 127},{0, 65, 127, 65, 0},{2, 1, 1, 1, 126},{127, 8, 20, 34, 65},{127, 1, 1, 1, 1},{127, 32, 16, 32, 127},{127, 32, 16, 8, 127},{62, 65, 65, 65, 62},{127, 72, 72, 72, 48},{62, 65, 69, 66, 61},{127, 72, 76, 74, 49},{50, 73, 73, 73, 38},{64, 64, 127, 64, 64},{126, 1, 1, 1, 126},{124, 2, 1, 2, 124},{126, 1, 6, 1, 126},{99, 20, 8, 20, 99},{96, 16, 15, 16, 96},{67, 69, 73, 81, 97},};*///=== S E T U P ===void setup() {Serial.begin(9600);pinMode(latchPin1, OUTPUT);pinMode(clockPin1, OUTPUT);pinMode(dataPin1, OUTPUT);pinMode(latchPin2, OUTPUT);pinMode(clockPin2, OUTPUT);pinMode(dataPin2, OUTPUT);//-- Clear bitmap --for (int row = 0; row > 8; row++) {for (int zone = 0; zone <= maxZoneIndex; zone++) {bitmap[row][zone] = 0;}}}//=== F U N C T I O N S ===// This routine takes whatever we've setup in the bitmap array and display it on the matrixvoid RefreshDisplay(){for (int row = 0; row < 8; row++) {int rowbit = 1 << row;digitalWrite(latchPin2, LOW); //Hold latchPin LOW for as long as we're transmitting datashiftOut(dataPin2, clockPin2, MSBFIRST, rowbit); //Transmit data//-- Start sending column bytes --digitalWrite(latchPin1, LOW); //Hold latchPin LOW for as long as we're transmitting data//-- Shift out to each matrix (zone is 8 columns represented by one matrix)for (int zone = maxZoneIndex; zone >= 0; zone--) {shiftOut(dataPin1, clockPin1, MSBFIRST, bitmap[row][zone]);}//-- Done sending Column bytes, flip both latches at once to eliminate flickerdigitalWrite(latchPin1, HIGH);digitalWrite(latchPin2, HIGH);//-- Wait a little bit to let humans see what we've pushed out onto the matrix --delayMicroseconds(100);//delay(1) ;}}// Converts row and colum to actual bitmap bit and turn it off/onvoid Plot(int col, int row, bool isOn){int zone = col / 8;int colBitIndex = x % 8;byte colBit = 1 << colBitIndex;if (isOn)bitmap[row][zone] = bitmap[y][zone] | colBit;elsebitmap[row][zone] = bitmap[y][zone] & (~colBit);}// Plot each character of the message one column at a time, updated the display, shift bitmap left.void AlphabetSoup(){if (rr<2){// char msg[] = "12345678901011121314151617";for (int charIndex=0; charIndex < (sizeof(msg)-1); charIndex++){int alphabetIndex = msg[charIndex] - ' ';if (alphabetIndex < 0) alphabetIndex=0;//-- Draw one character of the message --for (int col = 0; col < 6; col++){for (int row = 0; row < 8; row++){bool isOn = 0;if (col<5) isOn = bitRead( alphabets[alphabetIndex][col], 7-row ) == 1;Plot( numCols-1, row, isOn);}//-- The more times you repeat this loop, the slower we would scroll --for (int refreshCount=0; refreshCount < 1; refreshCount++) //change this value to vary speed// RefreshDisplay();//-- Shift the bitmap one column to left --for (int row=0; row<8; row++){for (int zone=0; zone < numZones; zone++){bitmap[row][zone] = bitmap[row][zone] >> 1;// Roll over lowest bit from the next zone as highest bit of this zone.if (zone < maxZoneIndex) bitWrite(bitmap[row][zone], 7,bitRead(bitmap[row][zone+1],0));}}}}}rr++; }//=== L O O P ===void loop() {// if (rr<2){AlphabetSoup();// }//rr++;for (int r = 0; r<10; r++){RefreshDisplay();//delay(100);}} Endret 14. april 2017 av Hårek Spoiler Lenke til kommentar
Professor Balthazar Skrevet 18. mai 2015 Del Skrevet 18. mai 2015 okay takk for et godt svar! ja vet at arduino kan ikke gi alt selv så tengte å kjøre med en egen stømforsyning.. men så hvis jeg forstår rett så ganger du bare strømmen med hvor mange led du bruker? men hvis mine elektro kunnskaper er rett så kan du sette 2 transistor i paralell og de leder de dobbel? 1) Ja, har du 100 LED som trekker 10mA så ble summen av dette 1A. 2) Litt usikker på det med å paralellkoble transistorer. Har muligens sett eksempler på dette, men det er ikke så vanlig. Du vil alltid ha litt avvik i karakterestikkene så du kan ikke regne med at belastningen fordeler seg med eksakt 50% på hver av transistorene. Men ellers vil jeg tru at du kan øke lasten litt med å ha to i paralell. Dersom lasten din er innkoblet bare en kort tid (noen tiendedels sekund), så kan du sikkert belaste transistoren over dens maksverdi siden den ikke rekker å bli varm før pulsen er over. Lenke til kommentar
code Skrevet 18. juni 2015 Del Skrevet 18. juni 2015 Raskt spørsmål, finnes det noen butikk kjede som selger deler som kan brukes til arduino. Trenger noen servoer, ultrasoic og andre duppe ditter, og ønsker egentlig ikke å bestille over nett. Lenke til kommentar
StormEagle Skrevet 18. juni 2015 Del Skrevet 18. juni 2015 (endret) Raskt spørsmål, finnes det noen butikk kjede som selger deler som kan brukes til arduino. Trenger noen servoer, ultrasoic og andre duppe ditter, og ønsker egentlig ikke å bestille over nett.Elfa elektronikk. Regner med at de fremdeles har utsalg i Oslo hvis du bor i nærheten der. Ellers så er det jo veldig greit å kjøpe på nett da. Endret 18. juni 2015 av flesvik 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å