Willekeurige sorteervolgorden (2 / 4 stap)

Stap 2: Code

Okay - dus - is wanneer u werkt met code het ideaal om iets te gebruiken als Github om wijzigingen bij te houden. Ik doe dit niet. Dus, ik per ongeluk schreef over de meest recente werkversie van de code. Ik heb de laatst opgeslagen versie, maar ik ben niet zeker hoe compleet is. Het is waarschijnlijk een beetje buggy.

Novertheless, aangezien niemand van u zal waarschijnlijk bouwen dit ding aanwezig die manier, en het bed is momenteel in stukken en niet operationeel is, ik ga om te posten wat ik heb.

Ik ben ook het delen van code van de test voor handmatig controleren van de motoren. Als u op zoek bent op dit project voor een Arduino aan zeer grote motoren via een Alltrax motor controller interfacing, zullen deze code meer nuttig aan u hoe dan ook.

Laatst opgeslagen versie van de Robot Bed test code:

 /*This example code is in the public domain. */ //establish throttle pins int leftThrottle = 3; // LED connected to digital pin 9 int rightThrottle = 5; // LED connected to digital pin 9 //establish solenoid pins int leftOn = 7; // LED connected to digital pin 9 int rightOn = 8; // LED connected to digital pin 9 //establish contactor pins int leftReverse = 9; int rightReverse = 10; //The drive speed sent to the throttle int gospeed = 86; volatile int foserious = 0; //FRONT int FrontLeftSnd = 30; int FrontLeftRcv = 31; int FrontCenterSnd = 32; int FrontCenterRcv = 33; int FrontRightSnd = 34; int FrontRightRcv = 35; //RIGHT SIDE int Side1LeftSnd = 36; int Side1LeftRcv = 37; int Side1CenterSnd = 38; int Side1CenterRcv = 39; int Side1RightSnd = 40; int Side1RightRcv = 41; //BACK int BackLeftSnd = 42; int BackLeftRcv = 43; int BackCenterSnd = 44; int BackCenterRcv = 45; int BackRightSnd = 46; int BackRightRcv = 47; //LEFT SIDE int Side2LeftSnd = 49; int Side2LeftRcv = 48; int Side2CenterSnd = 51; int Side2CenterRcv = 50; int Side2RightSnd = 53; int Side2RightRcv = 52; //array of all of the input and output pin names. Used later to read all of the sensors in a for loop. int SensorOutputs[] = {FrontLeftSnd, FrontCenterSnd, FrontRightSnd, Side1LeftSnd, Side1CenterSnd, Side1RightSnd, BackLeftSnd, BackCenterSnd, BackRightSnd, Side2LeftSnd, Side2CenterSnd, Side2RightSnd}; int SensorInputs[] = {FrontLeftRcv, FrontCenterRcv, FrontRightRcv, Side1LeftRcv, Side1CenterRcv, Side1RightRcv, BackLeftRcv, BackCenterRcv, BackRightRcv, Side2LeftRcv, Side2CenterRcv, Side2RightRcv}; int dontgo = 0; //number of total sensors int SensorCount = 12; int nothingHappening = 0; int realCloseLike = 0; int goingforward = 0; int goingbackward = 0; int goingright = 0; int goingleft = 0; int backhit = 0; int fronthit = 0; int righthit = 0; int lefthit = 0; int amountToMove = 1000; int picked; void setup() { cli();//stop interrupts TCCR1A = 0;// set entire TCCR1A register to 0 TCCR1B = 0;// same for TCCR1B TCNT1 = 0;//initialize counter value to 0 // set compare match register for 1hz increments OCR1A = 512;// = (16*10^6) / (1*1024) - 1 (must be <65536) // turn on CTC mode TCCR1B |= (1 << WGM12); // Set CS10 and CS12 bits for 1024 prescaler TCCR1B |= (1 << CS12) | (1 << CS10); // enable timer compare interrupt TIMSK1 |= (1 << OCIE1A); sei();//allow interrupts Serial.begin(9600); pinMode(leftOn, OUTPUT); pinMode(rightOn, OUTPUT); pinMode(leftReverse, OUTPUT); pinMode(rightReverse, OUTPUT); //Make sure the power is off digitalWrite(leftOn, LOW); digitalWrite(rightOn, LOW); digitalWrite(leftReverse, LOW); digitalWrite(rightReverse, LOW); //bumper sensor pins pinMode(18, INPUT); pinMode(19, INPUT); //Set distance sensor output pins pinMode(FrontLeftSnd, OUTPUT); //pin 30 pinMode(FrontCenterSnd, OUTPUT); //pin 32 pinMode(FrontRightSnd, OUTPUT); // pin 34 pinMode(Side1LeftSnd, OUTPUT); //pin 36 pinMode(Side1CenterSnd, OUTPUT); //pin 38 pinMode(Side1RightSnd, OUTPUT); // pin 40 pinMode(BackLeftSnd, OUTPUT); //pin 42 pinMode(BackCenterSnd, OUTPUT); //pin 44 pinMode(BackRightSnd, OUTPUT); // pin 46 pinMode(Side2LeftSnd, OUTPUT); //pin 49 pinMode(Side2CenterSnd, OUTPUT); //pin 51 pinMode(Side2RightSnd, OUTPUT); // pin 53 //Set distance sensor input pins pinMode(FrontLeftRcv, INPUT); //pin 31 pinMode(FrontCenterRcv, INPUT); //pin 33 pinMode(FrontRightRcv, INPUT); //pin 35 pinMode(Side1LeftRcv, INPUT); //pin 37 pinMode(Side1CenterRcv, INPUT); //pin 39 pinMode(Side1RightRcv, INPUT); //pin 41 pinMode(BackLeftRcv, INPUT); //pin 43 pinMode(BackCenterRcv, INPUT); //pin 45 pinMode(BackRightRcv, INPUT); //pin 47 pinMode(Side2LeftRcv, INPUT); //pin 48 pinMode(Side2CenterRcv, INPUT); //pin 50 pinMode(Side2RightRcv, INPUT); //pin 52 //And wait a moment delay(3000); } void loop() { lookAllAround(); moveRobot(); delay(amountToMove); slowstop(); delay(1500); } ISR(TIMER1_COMPA_vect) { //Interrupt at freq of 1kHz to measure reed switch//generates pulse wave of frequency 8kHz/2 = 4kHz (takes two cycles for full wave- toggle high then toggle low) if(lefthit == 0 && righthit == 0 && fronthit == 0 && backhit == 0){ if(digitalRead(18) == HIGH){ hardstop(); Serial.println(goingbackward); Serial.println(goingforward); Serial.println(goingleft); Serial.println(goingright); Serial.println("FUCK YEAH!"); if(goingright == 1){ righthit = 1; goingright = 0; } if(goingleft == 1){ lefthit = 1; goingleft = 0; } if(goingbackward == 1){ backhit = 1; goingbackward = 0; } if(goingforward == 1){ fronthit = 1; goingforward = 0; } } } if(lefthit == 0 && righthit == 0 && fronthit == 0 && backhit == 0){ if(digitalRead(19) == HIGH){ hardstop(); Serial.println("FUCK NO!"); Serial.println(goingbackward); Serial.println(goingforward); Serial.println(goingleft); Serial.println(goingright); if(goingbackward == 1){ backhit = 1; goingbackward = 0; } if(goingforward == 1){ fronthit = 1; goingforward = 0; } if(goingright == 1){ righthit = 1; goingright = 0; } if(goingleft == 1){ lefthit = 1; goingleft = 0; } } } } void moveRobot(){ //first see if hit -- if hit while moving in any of the directions - auto-pick the other direction //-- otherwise pick randomly if(backhit == 1){ amountToMove = 1000; backhit = 0; fronthit = 0; lefthit = 0; righthit = 0; picked = 0; } else if(fronthit == 1){ amountToMove = 1000; backhit = 0; fronthit = 0; lefthit = 0; righthit = 0; picked = 1; } else if(lefthit == 1){ amountToMove = 500; backhit = 0; fronthit = 0; lefthit = 0; righthit = 0; picked = 2; } else if(righthit == 1){ amountToMove = 500; backhit = 0; fronthit = 0; lefthit = 0; righthit = 0; picked = 3; } else{ picked = random(3); Serial.println("WTF!?"); amountToMove = 1000; } switch(picked){ case 0: goingforward = 1; goingbackward = 0; goingright = 0; goingleft = 0; forwards(); Serial.println("go forwards"); break; case 1: goingforward = 0; goingbackward = 1; goingright = 0; goingleft = 0; backwards(); Serial.println("go back"); break; case 2: goingforward = 0; goingbackward = 0; goingright = 1; goingleft = 0; right(); Serial.println("go right"); break; case 3: goingforward = 0; goingbackward = 0; goingright = 0; goingleft = 1; left(); Serial.println("go left"); break; } delay(1); // delay in between reads for stability } void forwards(){ //activate the reverse contactor digitalWrite(leftReverse, HIGH); delay(50); digitalWrite(rightReverse, HIGH); delay(100); //activate the solenoids digitalWrite(leftOn, HIGH); digitalWrite(rightOn, HIGH); //take a breath delay(500); //engage the throttle analogWrite(rightThrottle, gospeed); analogWrite(leftThrottle, gospeed); } void backwards(){ //activate the solenoids digitalWrite(leftOn, HIGH); digitalWrite(rightOn, HIGH); //take a breath delay(500); // engage the throttle analogWrite(rightThrottle, gospeed); analogWrite(leftThrottle, gospeed); } void right(){ if(dontgo == 0){ //activate the solenoids digitalWrite(leftOn, HIGH); digitalWrite(rightOn, HIGH); //activate the reverse contactor digitalWrite(rightReverse, HIGH); //take a breath delay(500); //engage the throttle analogWrite(rightThrottle, gospeed); analogWrite(leftThrottle, gospeed); } //reset the variable dontgo = 0; } void left(){ if(dontgo == 0){ //activate the solenoids digitalWrite(leftOn, HIGH); digitalWrite(rightOn, HIGH); //activate the reverse contactor digitalWrite(leftReverse, HIGH); //take a breath delay(500); //engage the throttle analogWrite(rightThrottle, gospeed); analogWrite(leftThrottle, gospeed); } //reset the variable dontgo = 0; } void slowstop() { for(int fadeValue = gospeed ; fadeValue >= 0; fadeValue -=5) { // sets the value (range from 0 to 255): analogWrite(rightThrottle, fadeValue); analogWrite(leftThrottle, fadeValue); // wait for 30 milliseconds to see the dimming effect delay(500); } digitalWrite(leftOn, LOW); digitalWrite(rightOn, LOW); digitalWrite(leftReverse, LOW); digitalWrite(rightReverse, LOW); int goingforward = 0; int goingbackward = 0; int goingright = 0; int goingleft = 0; delay(2000); lookAllAround(); delay(1000); } void hardstop() { for(int fadeValue = gospeed ; fadeValue >= 0; fadeValue -=5) { // sets the value (range from 0 to 255): analogWrite(rightThrottle, fadeValue); analogWrite(leftThrottle, fadeValue); // wait for 30 milliseconds to see the dimming effect altDelay(50); } digitalWrite(leftOn, LOW); digitalWrite(rightOn, LOW); digitalWrite(leftReverse, LOW); digitalWrite(rightReverse, LOW); } void altDelay(int x) { for(unsigned int i=0; i<=x; i++) { delayMicroseconds(1000); } } void lookAllAround(){ long duration, inches, cm; for (int thisPin = 0; thisPin < 1; thisPin++) { digitalWrite(SensorOutputs[thisPin], LOW); delayMicroseconds(2); digitalWrite(SensorOutputs[thisPin], HIGH); delayMicroseconds(12); digitalWrite(SensorOutputs[thisPin], LOW); duration = pulseIn(SensorInputs[thisPin], HIGH); digitalWrite(SensorOutputs[thisPin], LOW); // convert the time into a distance inches = microsecondsToInches(duration); Serial.print(SensorOutputs[thisPin]); Serial.print(": "); Serial.print(inches); Serial.println("in, "); // //check and check again // if(inches > 10 && inches < 25){ // realCloseLike = 0; // for(int checkagain = 0; checkagain < 3; checkagain++) { // delay(100); // digitalWrite(SensorOutputs[thisPin], LOW); // delayMicroseconds(2); // digitalWrite(SensorOutputs[thisPin], HIGH); // delayMicroseconds(12); // digitalWrite(SensorOutputs[thisPin], LOW); // // duration = pulseIn(SensorInputs[thisPin], HIGH); // inches = microsecondsToInches(duration); // digitalWrite(SensorOutputs[thisPin], LOW); // // delay(100); // // if(inches > 10 && inches < 25){ // // Serial.print(SensorOutputs[thisPin]); // Serial.print(": "); // Serial.print(inches); // Serial.println("in, "); // // realCloseLike = realCloseLike + 1; // // if(realCloseLike > 2){ // dontgo = 1; // } // } // } // } //Takes about 1/2 second to check all of the sensors @ 50uS delay(100); } } long microsecondsToInches(long microseconds) { // According to Parallax's datasheet for the PING))), there are // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per // second). This gives the distance travelled by the ping, outbound // and return, so we divide by 2 to get the distance of the obstacle. // See: <a href="http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf"> <a href="http://www.parallax.com/dl/docs/prod/acc/28015-PI...</a"> http://www.parallax.com/dl/docs/prod/acc/28015-PI...</a>> return microseconds / 74 / 2; } 

Motorische controle test codevoorbeeld:

 /* This example code is in the public domain. */ //establish throttle pins int leftThrottle = 3; // LED connected to digital pin 9 int rightThrottle = 5; // LED connected to digital pin 9 //establish solenoid pins int leftOn = 7; // LED connected to digital pin 9 int rightOn = 8; // LED connected to digital pin 9 //establish contactor pins int leftReverse = 9; int rightReverse = 10; //The drive speed sent to the throttle int gospeed = 82; int nothingHappening = 0; int realCloseLike = 0; int goingforward = 0; int goingbackward = 0; int goingright = 0; int goingleft = 0; int backhit = 0; int fronthit = 0; int righthit = 0; int lefthit = 0; int amountToMove = 1000; int timeToWait = 30000; int picked; void setup() { cli();//stop interrupts TCCR1A = 0;// set entire TCCR1A register to 0 TCCR1B = 0;// same for TCCR1B TCNT1 = 0;//initialize counter value to 0 // set compare match register for 1hz increments OCR1A = 512;// = (16*10^6) / (1*1024) - 1 (must be <65536) // turn on CTC mode TCCR1B |= (1 << WGM12); // Set CS10 and CS12 bits for 1024 prescaler TCCR1B |= (1 << CS12) | (1 << CS10); // enable timer compare interrupt TIMSK1 |= (1 << OCIE1A); sei();//allow interrupts Serial.begin(9600); pinMode(leftOn, OUTPUT); pinMode(rightOn, OUTPUT); pinMode(leftReverse, OUTPUT); pinMode(rightReverse, OUTPUT); //Make sure the power is off digitalWrite(leftOn, LOW); digitalWrite(rightOn, LOW); digitalWrite(leftReverse, LOW); digitalWrite(rightReverse, LOW); //bumper sensor pins pinMode(18, INPUT); pinMode(19, INPUT); //And wait a moment delay(3000); } void loop() { left(); delay(amountToMove); slowstop(); delay(timeToWait); backwards(); delay(amountToMove); slowstop(); delay(timeToWait); forwards(); delay(amountToMove); slowstop(); delay(timeToWait); right(); delay(amountToMove); slowstop(); delay(timeToWait); /// right(); delay(amountToMove); slowstop(); delay(timeToWait); forwards(); delay(amountToMove); slowstop(); delay(timeToWait); backwards(); delay(amountToMove); slowstop(); delay(timeToWait); left(); delay(amountToMove); slowstop(); delay(timeToWait); /// forwards(); delay(amountToMove); slowstop(); delay(timeToWait); backwards(); delay(amountToMove); slowstop(); delay(timeToWait); forwards(); delay(amountToMove); slowstop(); delay(timeToWait); backwards(); delay(amountToMove); slowstop(); delay(timeToWait); } ISR(TIMER1_COMPA_vect) { //Interrupt at freq of 1kHz to measure reed switch//generates pulse wave of frequency 8kHz/2 = 4kHz (takes two cycles for full wave- toggle high then toggle low) if(lefthit == 0 && righthit == 0 && fronthit == 0 && backhit == 0){ if(digitalRead(18) == HIGH){ hardstop(); Serial.println(goingbackward); Serial.println(goingforward); Serial.println(goingleft); Serial.println(goingright); Serial.println("FUCK YEAH!"); if(goingright == 1){ righthit = 1; goingright = 0; } if(goingleft == 1){ lefthit = 1; goingleft = 0; } if(goingbackward == 1){ backhit = 1; goingbackward = 0; } if(goingforward == 1){ fronthit = 1; goingforward = 0; } } } if(lefthit == 0 && righthit == 0 && fronthit == 0 && backhit == 0){ if(digitalRead(19) == HIGH){ hardstop(); Serial.println(goingbackward); Serial.println(goingforward); Serial.println(goingleft); Serial.println(goingright); Serial.println("FUCK NO!"); if(goingbackward == 1){ backhit = 1; goingbackward = 0; } if(goingforward == 1){ fronthit = 1; goingforward = 0; } if(goingright == 1){ righthit = 1; goingright = 0; } if(goingleft == 1){ lefthit = 1; goingleft = 0; } } } } void moveRobot(){ //first see if hit -- if hit while moving in any of the directions - auto-pick the other direction //-- otherwise pick randomly if(backhit == 1){ amountToMove = 1000; backhit = 0; fronthit = 0; lefthit = 0; righthit = 0; picked = 0; } else if(fronthit == 1){ amountToMove = 1000; backhit = 0; fronthit = 0; lefthit = 0; righthit = 0; picked = 1; } else if(lefthit == 1){ amountToMove = 500; backhit = 0; fronthit = 0; lefthit = 0; righthit = 0; picked = 2; } else if(righthit == 1){ amountToMove = 500; backhit = 0; fronthit = 0; lefthit = 0; righthit = 0; picked = 3; } else{ picked = random(3); Serial.println("WTF!?"); amountToMove = 1000; } switch(picked){ case 0: goingforward = 1; goingbackward = 0; goingright = 0; goingleft = 0; forwards(); Serial.println("go forwards"); break; case 1: goingforward = 0; goingbackward = 1; goingright = 0; goingleft = 0; backwards(); Serial.println("go back"); break; case 2: goingforward = 0; goingbackward = 0; goingright = 1; goingleft = 0; right(); Serial.println("go right"); break; case 3: goingforward = 0; goingbackward = 0; goingright = 0; goingleft = 1; left(); Serial.println("go left"); break; } delay(1); // delay in between reads for stability } void forwards(){ //activate the reverse contactor digitalWrite(leftReverse, HIGH); delay(50); digitalWrite(rightReverse, HIGH); delay(100); //activate the solenoids digitalWrite(leftOn, HIGH); digitalWrite(rightOn, HIGH); //take a breath delay(500); //engage the throttle analogWrite(rightThrottle, gospeed); analogWrite(leftThrottle, gospeed); } void backwards(){ //activate the solenoids digitalWrite(leftOn, HIGH); digitalWrite(rightOn, HIGH); //take a breath delay(500); // engage the throttle analogWrite(rightThrottle, gospeed); analogWrite(leftThrottle, gospeed); } void right(){ //activate the solenoids digitalWrite(leftOn, HIGH); digitalWrite(rightOn, HIGH); //activate the reverse contactor digitalWrite(rightReverse, HIGH); //take a breath delay(500); //engage the throttle analogWrite(rightThrottle, gospeed); analogWrite(leftThrottle, gospeed); } void left(){ //activate the solenoids digitalWrite(leftOn, HIGH); digitalWrite(rightOn, HIGH); //activate the reverse contactor digitalWrite(leftReverse, HIGH); //take a breath delay(500); //engage the throttle analogWrite(rightThrottle, gospeed); analogWrite(leftThrottle, gospeed); } void slowstop() { for(int fadeValue = gospeed ; fadeValue >= 0; fadeValue -=5) { // sets the value (range from 0 to 255): analogWrite(rightThrottle, fadeValue); analogWrite(leftThrottle, fadeValue); // wait for 30 milliseconds to see the dimming effect delay(500); } digitalWrite(leftOn, LOW); digitalWrite(rightOn, LOW); digitalWrite(leftReverse, LOW); digitalWrite(rightReverse, LOW); int goingforward = 0; int goingbackward = 0; int goingright = 0; int goingleft = 0; } void hardstop() { for(int fadeValue = gospeed ; fadeValue >= 0; fadeValue -=5) { // sets the value (range from 0 to 255): analogWrite(rightThrottle, fadeValue); analogWrite(leftThrottle, fadeValue); // wait for 30 milliseconds to see the dimming effect altDelay(50); } digitalWrite(leftOn, LOW); digitalWrite(rightOn, LOW); digitalWrite(leftReverse, LOW); digitalWrite(rightReverse, LOW); } void altDelay(int x) { for(unsigned int i=0; i<=x; i++) { delayMicroseconds(1000); } } 

Gerelateerde Artikelen

Vreemde willekeurige Insect [SRI]

Vreemde willekeurige Insect [SRI]

Ja Ja, zijn treksluiters echt nuttig. Maar wat over het maken van een nutteloos diy gewoon voor de lol? Ik had een paar van hen met verschillende lengtes en dus heb ik besloten om iets koel en bizar. Ik zal je laten zien hoe maak je je eigen vreemde
Maken van willekeurige kunst voor puzzels

Maken van willekeurige kunst voor puzzels

bent u nog steeds het maken van puzzels met foto's? Dat is te gemakkelijk! Ik ga u tonen hoe het maken van een puzzel met behulp van de kracht van de code, en willekeur en vector kunst... Lees verder!Dit project is enerzijds code, enerzijds kunst en
Snijd elk willekeurige complexe ontwerp met een ambachtelijke cutter

Snijd elk willekeurige complexe ontwerp met een ambachtelijke cutter

Update: wow, bummer.  Blijkt ProvoCraft (de makers van de Cricut) opgeroepen "Maken de Cut" en "zeker Cuts A Lot" zodat zij kunnen niet langer verkopen hun producten om te werken met de Cricut.Hier zijn sommige concurrerende producten
5 dingen om te maken met dat willekeurige stuk karton

5 dingen om te maken met dat willekeurige stuk karton

U ooit iets kopen en vinden van een willekeurige vel karton binnenkant van de verpakking die absoluut geen doel dan ook dient? Nou, gelukkig zijn er vele manieren om deze zogenaamd doublures stukken van karton te maken aan goed gebruik. Check ze uit!
Atmel Xmega USB/serieel willekeurige golfvorm Generator

Atmel Xmega USB/serieel willekeurige golfvorm Generator

dit instructable loopt u via programmering en de Boston Android Xmega evaluatie board gebruiken om te werken als een eenvoudige willekeurige golfvorm generator te profiteren van de geïntegreerde 12 bit DAC en hoge snelheid DMA-controller. Ik heb voor
Hoe naar CNC machine een pompoen (of een willekeurig object)

Hoe naar CNC machine een pompoen (of een willekeurig object)

dit jaar (2012) heb ik besloten om een pompoen snijden voor het eerst in mijn leven. Ik wilde mijn grote CNC machine (zie) gebruiken voor het doen van het daadwerkelijke snijden. Ook wilde ik de shapes voor snijden, ontwerpen met behulp van een 3D-on
Willekeurige decoratie

Willekeurige decoratie

dus Hallo iedereen. Deze willekeurige decoratie is niet moeilijk om te maken en er zijn geen specifieke stappen om dit ding. Gewoon wat oude spullen verzamelen en laat je fantasie run wild. Veel plezier met maken!:)
Hoe maak je een willekeurige plaatsing Generator

Hoe maak je een willekeurige plaatsing Generator

Hallo in dit instructable ik zal u tonen hoe te een generator van willekeurige plaatsing van mijn eigen creatie makeneerst moet je om te openen de visual basic-studioVoeg vervolgens een knop de en dubbel klik op hetDaarna voeg deze regel code:' Initi
Hoe te te beschermen van een willekeurige 18650 cel

Hoe te te beschermen van een willekeurige 18650 cel

In dit instructable ik zal je laten zien een zeer nuttige levensduur-hack die wordt gebruikt om een willekeurige 18650 cel. Je kunt er alleen met een oude mobiele telefoonbatterij en met sommige draden. De Lithium-ionenbatterijen die worden gebruikt
Willekeurige nummer Machine

Willekeurige nummer Machine

Hey Guys,OK, wilt u een willekeurig nummer machine. Gewoon downloaden van het bestand en klik op Ja als de "onbekende uitgever"!
Garage deur server met behulp van willekeurige upcycled elektronica

Garage deur server met behulp van willekeurige upcycled elektronica

eerste, een grote dank aan al de talloze mensen die ik geleerd van die hun projecten op deze website zetten.  Het heeft zeker een hele wereld aan mij geopend.  Hiervoor heb ik zou hebben nooit gebruikt een soldeerbout, of een multimeter, of gaan krij
Bouwen van een willekeurige muziek en licht Generator en glimp bewijs van GOD

Bouwen van een willekeurige muziek en licht Generator en glimp bewijs van GOD

echt willekeurige getallen genereren lijkt te zijn niet onmogelijk. Het is, echter vrij eenvoudig te gebruiken een microcontroller te genereren van pseudo-willekeurige getallen en deze vervolgens gebruiken om weer te geven klinkt en verschillende gek
Bouw van de Blinquencer - een licht gecontroleerd willekeurige muziekdoos

Bouw van de Blinquencer - een licht gecontroleerd willekeurige muziekdoos

Dit Instructable zal u tonen hoe te bouwen van een Blinquencer - een semi-willekeurige optische melodie generator dat gebruik drie flikkerende LEDs schijnt op een paar van afhankelijke weerstanden licht waarmee de toonhoogte van twee eenvoudige audio
Hoe maak je goede regenboog en willekeurige kleuren met het RGB-kleurmodel

Hoe maak je goede regenboog en willekeurige kleuren met het RGB-kleurmodel

Het lijkt erop dat dergelijke eenvoudige dingen als een regenboogeffect of soepel willekeurige verkleuren op een RGB LED behoorlijk triviaal zijn. Echter kom keer op keer ik op projecten met behulp van vreemde benaderingen van deze kwestie. De meest