рд▓рд╛рдЗрдЯ рдореНрдпреВрдЬрд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ + Arduino + RGB

рдкреНрд░рд╛рдердорд┐рдХ рдЕрдерд╡рд╛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рд▓рдХреНрд╖рдг


рдирдП рд╕рд╛рд▓ рдХреА рдЫреБрдЯреНрдЯрд┐рдпрд╛рдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЧреБрдЬрд░ рдЪреБрдХреА рд╣реИрдВ, рдпрд╣ рдЖрдиреЗ рд╡рд╛рд▓реЗ 2015 рдПрдирдЬреА рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ Arduin рдкрд░ рдкреНрд░рдХрд╛рд╢ рд╕рдВрдЧреАрдд (рдорд╛рд▓рд╛) рдХреЗ рд╡рд┐рдЪрд╛рд░ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдФрд░ RGB рдЯреЗрдк рдХреЛ рдЯреНрд░рд┐рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджрдмрд╛рдЬреА рдХрд░рддрд╛ рд╣реВрдВред
рд╡рд┐рдЪрд╛рд░, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдПрдирдЬреА рд╕реЗ 8 рдШрдВрдЯреЗ рдкрд╣рд▓реЗ рд╕рдордп рдкрд░ рдЖрдпрд╛ рдерд╛ред рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдХреА рд╕рдЬрд╛рд╡рдЯ рдХрд░рддреЗ рд╕рдордп, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдХрдорд░реЗ рдХреЛ рдЬрд▓реА рд╣реБрдИ рдорд╛рд▓рд╛ рдХреЗ рдЕрд╡рд╢реЗрд╖реЛрдВ рд╕реЗ рдирд╣реАрдВ рд╕рдЬрд╛ рд╕рдХрддрд╛!
рдФрд░ рджрд╛рджрд╛-рджрд╛рджреА рдФрд░ рдЪреАрдиреА рдорд╛рд▓рд╛рдУрдВ рдХреА рд░рд╕реНрдо рд╕реЛрд▓реНрдбрд░рд┐рдВрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реЛ рдЧрдИ рд╣реИред рдореБрдЭреЗ рдХреБрдЫ рдирдпрд╛ рдЪрд╛рд╣рд┐рдП рдерд╛!

рд▓рдХреНрд╖реНрдп


Arduino рдХреЗ рд▓рд┐рдП рдПрдХ RGB рдЯреЗрдк рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдЕрдкрдиреЗ рд╕рдВрдЧреАрдд рдкрд░ рдиреГрддреНрдп рдХрд░реЗрдВред

рдкрд░рд┐рдгрд╛рдо




рдХреНрдпрд╛ рдЬрд░реВрд░рдд рд╣реИ?





рдХрд╛рд░реНрдп


1. рдЪреВрдВрдХрд┐ рдЯреЗрдк 12V рд╣реИ, рд╣рдо рдЗрд╕реЗ рдбрд╛рд░реНрд▓рд┐рдВрдЧрдЯрди рдЯреНрд░рд╛рдВрдЬрд┐рд╕реНрдЯрд░ рдЕрд╕реЗрдВрдмрд▓реА ULN2003A (рдХреНрдпрд╛ рд╣реБрдЖ, рдпрд╣ рдерд╛!) тАЛтАЛрдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ Arduins (5V) рдХреЗ рдкрд┐рди рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
2. рдЯреЗрдк рдХреЛ рдПрдХ рдкреНрд░рдореБрдЦ рд╕реНрдерд╛рди рдкрд░ рдЧреЛрдВрдж рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рд╕рд╛рджрд╛ рдХрд╛рдЧрдЬ рдкреНрд░рдХрд╛рд╢ рдХреЗ рд╕рд╛рде рдЪрдорддреНрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ! рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд▓рд╛рд╕реНрдЯрд┐рдХ рдФрд░ рдЧреНрд▓рд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
3. SerialPort рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрд░ Arduin (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рдореЗрдВ рдПрдХ рд╕реНрдХреЗрдЪ рдбрд╛рд▓реЛ
4. рд╣рдо SerialPort рдкрд░ рд╣рд▓реНрдХрд╛ рд╕рдВрдЧреАрдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВрдиреЗ рдорд┐рдирд┐рдо рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред Winamp / AIMP рдкрд░ рдПрдХ рдмреИрда рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рдерд╛!
5. рд╕рдВрдЧреАрдд рд╕реЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдХреЛрдИ рднреА рдмреАрдорд╛рд░ рди рд╣реЛред рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрдЧрд░ рд╕рдВрдЧреАрдд рдЙрдкрдпреБрдХреНрдд рд╣реИ!
6. рдирд╛рдЪреЛ, рдзреНрдпрд╛рди рдХрд░реЛ, рдПрдирдЬреА рд╕реЗ рдорд┐рд▓реЛ!

рдкреНрд░рдЧрддрд┐


1. рдпреЛрдЬрдирд╛ рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред

2. рд╕реНрдХреЙрдЪ рдФрд░ рдкреЗрдкрд░ рдиреЗ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд┐рдпрд╛! рдкреНрд░рдХрд╛рд╢ рдЪрд┐рдХрдирд╛ рдФрд░ рд╕реБрдЦрдж рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдбрд┐рдЬрд╛рдЗрди рд╕рд░рд▓ рдФрд░ рд╕реАрдзрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреБрдЯрд┐рд▓ рдЪрд┐рдкрдХрд╛рдпрд╛ A4 рдЪрд╛рджрд░реЗрдВ рдХрд╛рдо рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд▓рдЧрддреА рд╣реИрдВ!

3. рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣рд┐рд╕реНрд╕рд╛ (рдХрд▓реНрдкрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реА рдЬрдЧрд╣ рд╣реИ)

Arduino рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рдиреАрдЪреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

"рдиреНрдпреВрдирддрдо" рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг:
import ddf.minim.*; import ddf.minim.analysis.*; import processing.serial.*; Serial port; Minim minim; AudioPlayer song; BeatDetect beat; BeatListener bl; float kickSize, snareSize, hatSize; class BeatListener implements AudioListener { private BeatDetect beat; private AudioPlayer source; BeatListener(BeatDetect beat, AudioPlayer source) { this.source = source; this.source.addListener(this); this.beat = beat; } void samples(float[] samps) { beat.detect(source.mix); } void samples(float[] sampsL, float[] sampsR) { beat.detect(source.mix); } } void setup() { size(512, 200, P3D); minim = new Minim(this); println("Available serial ports:"); println(Serial.list()); // check on the output monitor wich port is available on your machine port = new Serial(this, Serial.list()[0], 9600); song = minim.loadFile("1.mp3", 2048); // ,     !          *.mp3 song.play(); // a beat detection object that is FREQ_ENERGY mode that // expects buffers the length of song's buffer size // and samples captured at songs's sample rate beat = new BeatDetect(song.bufferSize(), song.sampleRate()); // set the sensitivity to 300 milliseconds // After a beat has been detected, the algorithm will wait for 300 milliseconds // before allowing another beat to be reported. You can use this to dampen the // algorithm if it is giving too many false-positives. The default value is 10, // which is essentially no damping. If you try to set the sensitivity to a negative value, // an error will be reported and it will be set to 10 instead. beat.setSensitivity(300); kickSize = snareSize = hatSize = 0; // make a new beat listener, so that we won't miss any buffers for the analysis bl = new BeatListener(beat, song); textFont(createFont("Helvetica", 16)); textAlign(CENTER); } boolean k1,k2,k3; void draw() { float s=10; background(0); fill(255); if ( beat.isKick()) k1 = true; if ( beat.isSnare()) k2 = true; if ( beat.isHat()) k3 = true; // textSize(kickSize/8); // text("KICK", width/4, height/2); // textSize(snareSize/8); // text("SNARE", width/2, height/2); // textSize(hatSize/8); // text("HAT", 3*width/4, height/2); port.write('R'); port.write((int)kickSize); port.write('G'); port.write((int)snareSize); port.write('B'); port.write((int)hatSize); if (k1) kickSize = constrain(kickSize+5, 20, 255); else kickSize = constrain(kickSize -5, 20, 255); if (kickSize==255) k1=false; if (k2) snareSize = constrain(snareSize+15, 40, 255); else snareSize = constrain(snareSize-15, 40, 255); if (snareSize==255) k2=false; if (k3) hatSize = constrain(hatSize+s, 20, 255); else hatSize = constrain(hatSize-s, 20, 255); if (hatSize==255) k3=false; } 


рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рд╣рдо рдЙрддреНрд╕рд╡ рдФрд░ рдорд╕реНрддреА рдХрд╛ рдПрдХ рд╕рд░рд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдпрд╣ рдХрд╛рдордЪрд▓рд╛рдК рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рд╕реЗ рдорд┐рд▓рд╛ рд╣реИ! рд▓рдХреНрд╖реНрдп рдЦрд░реАрдж рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдм $ 50 рд▓рдЧреЗрдЧрд╛

рдбрд╛рдЙрдирд▓реЛрдб рдлрд╝рд╛рдЗрд▓реЗрдВ:

*** рдпрд╣рд╛рдБ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ *** рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ Arduina рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреЗрдЪ рд╣реИ, RGB рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреЗрдЪ рд╣реИ, рдФрд░ рд╕реНрд╡рдпрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИред рдиреНрдпреВрдирддрдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╡рдЬрди рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╡рд╣рд╛рдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред

рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

Source: https://habr.com/ru/post/In214337/


All Articles