Cov txheej txheem:
- Kauj ruam 1: Cov ntaub ntawv
- Kauj Ruam 2: Kev Npaj Tsim Kho
- Kauj Ruam 3: Kho Vajtse: Tsim Circuit Court
- Kauj Ruam 4: Kho Vajtse: Txiav Acrylic
- Kauj Ruam 5: Arduino Programming Code
- Kauj Ruam 6: Ua tiav Saib
Video: Dot Teeb Txawv: 6 Kauj Ruam
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:27
Kuv pib nrog lub tswv yim "Kuv puas tuaj yeem tswj lub teeb nrog kuv tus kheej txhais tes thiab qhia kuv tus kheej lub siab nyiam?"
Nws yog 'Dot Light Pattern' uas tso cai rau koj los tsim koj cov xim los ntawm koj tus kheej, tsim koj tus kheej cov qauv nrog cov xim ntawd, thiab ntsib ntau yam kev cuam tshuam los ntawm cov duab.
Kauj ruam 1: Cov ntaub ntawv
- Arduino UNO x 13
- WS2901 lossis WS2811 pixel LED sawb (130 LEDS)
- Khawm hloov x 1
- Swb x65
- Lub zog ntsuas x 65
- Zaj sawv kab
- Lub zog txaus SMPS
- Tus neeg xyuas pib cable
- Acrylic pob tshab round bar (30 hli txoj kab uas hla)
- Cov xim dub Acrylic board (5T) (500mm*790mm) x 2, (500mm*35mm) x 2, (790mm*35mm) x 2
Kauj Ruam 2: Kev Npaj Tsim Kho
Kauj Ruam 3: Kho Vajtse: Tsim Circuit Court
-
Txiav cov phaj acrylic zoo li cov qauv saum toj no. (saib cov kauj ruam 2)
- Ib qho ntawm neo-pixel LED tau muab tso rau sab saum toj thiab hauv qab ntawm lub hwj chim ntsuas qhov, thiab tag nrho ntawm 65 khub ntawm neo-pixel LEDs tau txuas nrog.
- Ib khub ntawm neo-pixel LEDs tau txuas ua ke los tsim ib tus pin Arduino.
- Haum 65 lub zog ntsuas rau lub qhov ntsuas qhov ntsuas. (Muab nws tso rau sab nraud ntawm qhov chaw neo-pixelated.)
- Txuas 65 lub khawm hloov pauv kom haum rau qhov hloov qhov.
- Tag nrho ntawm kaum peb Arduino UNOs tau txuas rau txhua ntawm kaum peb thaj tsam txhawm rau khi tsib daim ntawm 65 daim kho vajtse rau hauv ib qho Arduino UNO.
- Raws li tau qhia hauv daim duab txuas, Txuas lub zog ntsuas, ntsuas qhov hloov pauv thiab neo-pixel LEDs rau tus pin ntawm Arduino UNO los ntawm xaim. (saib cov kauj ruam 2)
- GND thiab 5V tus pin ntawm ntau Arduino UNOs tau sau rau cov xov hlau, tom qab ntawd txuas nrog lub zog sab nraud. (saib cov kauj ruam 2)
- Tshem cov hmoov av los ntawm Cua siab.
Kauj Ruam 4: Kho Vajtse: Txiav Acrylic
- Txiav acrylic pas nrig kom ntev li 50 hli.
- Ib sab ntawm cov pas nrig acrylic tau muab laum rau qhov loj thiab qhov tob kom haum rau tus tswj ib feem ntawm lub zog ntsuas.
- Cov pas nrig acrylic tau txiav me ntsis dav dua lub qhov rau kev tshem tawm uas tuaj yeem haum tau zoo rau hauv lub zog ntsuas.
-
Lwm sab muab cov ntawv me me kom lub teeb tuaj yeem kis tau zoo.
Kauj Ruam 5: Arduino Programming Code
www.kasperkamperman.com/blog/arduino/ardui…
'hsb rau rgb' code 참고 참고 한 사이트
#suav nrog
// 'adafruit_neopixel' 파일 파일 파일 라는 라이브러리 를 를
// 픽셀 픽셀 연결 핀 선언
#define PIN1 2 #define PIN2 3 #define PIN3 4 #define PIN4 5 #define PIN5 6
#define NUMPIXELS 2 // 픽셀 픽셀 LED 갯수
#define NUM_LIGHTS 5 // 모듈 모듈 갯수 (네오 픽셀 오브젝트 갯수)
// 픽셀 픽셀 오브젝트 Array 선언
Adafruit_NeoPixel pixels = {Adafruit_NeoPixel (NUMPIXELS, PIN1, NEO_GRB + NEO_KHZ800), Adafruit_NeoPixel (NUMPIXELS, PIN2, NEO_GRB + NEO_KHZ800), Adafruit_NeoPixel (NUMPIXELS, PIN3, NEO_GRB + NEO_KHZ800), Adafruit_NeoPixel (NUMPIXELS, PIN4, NEO_GRB + NEO_KHZ800), Adafruit_NeoPixel (NUMPIXELS, PIN5, NEO_GRB + NEO_KHZ800)}; //// 네오 픽셀 을 사용 하기 위해 객체 객체 하나 를 생성 // 의 인자 값 네오 의 의 의 // 두번째 인자 값 은 네오 픽셀 이 이 번호 번호 세번째 // 세번째 인자 값 은 픽셀 바뀌는 바뀌는 바뀌는 바뀌는 바뀌는 바뀌는
//////////////////////////////////////////////////////////////
////// HSV 를 RGB 변환 변환 하는 함수 getRGB () 위한 위한 변수 와 와 함수
const byte dim_curve = {
0, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, 22, 22, 22, 23, 23, 24, 24, 25, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 32, 32, 33, 33, 34, 35, 35, 36, 36, 37, 38, 38, 39, 40, 40, 41, 42, 43, 43, 44, 45, 46, 47, 48, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 70, 71, 73, 74, 75, 76, 78, 79, 81, 82, 83, 85, 86, 88, 90, 91, 93, 94, 96, 98, 99, 101, 103, 105, 107, 109, 110, 112, 114, 116, 118, 121, 123, 125, 127, 129, 132, 134, 136, 139, 141, 144, 146, 149, 151, 154, 157, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 190, 193, 196, 200, 203, 207, 211, 214, 218, 222, 226, 230, 234, 238, 242, 248, 255, }; //
tsis muaj dab tsi getRGB (int hue, int sat, int val, int xim [5] [3], int index) {
val = dim_curve [val]; zaum = 255 - dim_curve [255 - zaum];
// 색조, 및 밝기 밝기 (HSB /HSV), RGB 변환 변환
// dim_curve 밝기 밝기 값 채도 (반전) 사용 사용 됩니다 // 가장 가장 자연스럽게
tus r;
tus g; tus b; koj puag;
yog (sat == 0) {
xim [index] [0] = val; xim [index] [1] = val; xim [index] [2] = val; lwm yam {
puag = ((255 - sat) * val) >> 8;
hloov (hue / 60) {
rooj plaub 0: r = val; g = (((val - puag) * hue) / 60) + puag; b = puag; tawg;
rooj plaub 1:
r = (((val - puag)) * (60 - (hue % 60))) / 60) + puag; g = tau; b = puag; tawg;
rooj plaub 2:
r = puag; g = tau; b = (((val - puag)) * (hue % 60)) / 60) + puag; tawg;
rooj plaub 3:
r = puag; g = (((val - puag)) * (60 - (hue % 60))) / 60) + puag; b = kev; tawg;
rooj plaub 4:
r = (((val - puag)) * (hue % 60)) / 60) + puag; g = puag; b = kev; tawg;
rooj plaub 5:
r = tau; g = puag; b = (((val - puag)) * (60 - (hue % 60))) / 60) + puag; tawg; }
xim [index] [0] = r;
xim [index] [1] = g; xim [index] [2] = b; }
}
int rgb_colors [NUM_LIGHTS] [3]; // color 픽셀 오브젝트 마다 color rgb xim 선언
int hue [NUM_LIGHTS]; // ue 픽셀 ue ue ue hue 선언 int sat [NUM_LIGHTS]; // 선언 픽셀 오브젝트 마다 명도 선언 선언 int brignt [NUM_LIGHTS]; // 픽셀 픽셀 오브젝트 갯수 마다 밝기
// 변수 변수 선언
int pibSwitch = {8, 9, 10, 11, 12}; // rau/tawm ool 핀 번호 boolean startState = {tsis tseeb, cuav, cuav, cuav, cuav}; // rau/tawm 상태
const int colorPin = {A0, A1, A2, A3, A4}; // 저항 저항 핀
int colorVal = {0, 0, 0, 0, 0}; // 저항 저항 초기
int animationButton = 7; // 모드 모드 변환 버튼 번호
/////////////////////////////////////////////////
// 모든 모든 변환 을 위한 버튼 디 바운싱 바운싱 디 // 디 바운싱 Button 시간 내 이벤트 가 하는것 에 대한 대한 해결 button button button button button button button button button button button int buttonState; // last 핀 으로부터 현재 판독 판독 값 int lastButtonState = HIGH; // igned 의 판독 은 은 상태 igned igned unsigned ntev lastDebounceTime = 0; // 으로 핀 이 마지막 으로 시간 으로 으로 0 으로 unsigned ntev debounceDelay = 50; // MOD 바운싱 타임 출력; 출력 깜빡 이면 증가 한다 한다 int MODE = 0; // 모드 모드 변수
int B_Interval [5]; // 링킹 링킹 을 위한 각 모듈 모듈 의 랜덤 속도
int B_Min = 100; // 링킹 링킹 최단 속도; int B_Max = 500; // 링킹 링킹 최장 속도; int R_Interval = 50; // D 애니메이션 속도 변수 int D_Interval = 10; // 속도 속도 변수
boolean B_state [5]; // 링킹 링킹 을 위한 각 모듈 의 의 상태
///////////////////////////////////////////////////////
// 테스 테스 킹 애니메이션 을 위한 시간 시간 변수
tsis tau kos npe ntev tam sim no Millis; // 시간 시간 변수
unsigned ntev B_previousMillis [5]; // long 모듈 의 링킹 링킹 igned unsigned ntev DR_Millis [5]; // 각 모듈 의 랜덤 타이머 예비 (예비) unsigned ntev R_previousMillis; // 타이머 타이머 unsigned ntev D_previousMillis; // 디밍 타이머
boolean firstRainbow = muaj tseeb; // 색상 색상 초기화 변수
hauv RainbowSpeed; // 변환 변환 변수
int Bright = 100; // Bright 초기 값 int BrightnessFactor = 1; // 증감 증감 값 //////////////////////////////////////////
void teeb tsa () {
rau (int i = 0; kuv <NUM_LIGHTS; kuv ++) {pixels .begin (); // 픽셀 픽셀 오브젝트 초기화}
// 인풋 인풋 설정
rau (int i = 0; kuv <NUM_LIGHTS; kuv ++) {pinMode (pibSwitch , INPUT_PULLUP); // rau/tawm pin 설정 설정} pinMode (animationButton, INPUT_PULLUP); // 버튼 버튼 인풋
rau (int i = 0; kuv <NUM_LIGHTS; i ++) {B_Interval = int (random (B_Min, B_Max)); // 모듈 별 블 랜덤 속도 (인터발) 변수 변수}
Serial.begin (9600); // 설정 설정
}
void voj () {
QAUV = CheckAnimMode (); // 에 에 애니메이션 체크 모드 함수 를 를
// 과 과 과 저항 을 값 을 을 각각 읽어 읽어 변수 에 에
rau (int kuv = 0; kuv <NUM_LIGHTS; kuv ++) {startState =! digitalRead (pibSwitch ); // rau/tawm 을 읽은 읽은 값 값 을 St St startState start 넣어 준다 // startState = digitalRead (pibSwitch ); colorVal = analogRead (colorPin [kuv]); // 저항 저항 저항 읽은 값 을 가변 가변 저항 초기 값 에 에 에 넣는다
hloov (MODE) {// 함수 함수 스위치 문
rooj plaub 0: ntawm (); // ntawm 실행 실행 tawg; // 에서 에서 빠져
rooj plaub 1:
zaj sawv (); // zaj sawv 실행 실행 tawg;
rooj plaub 2:
dimming (); // dimming 실행 실행 tawg;
rooj plaub 3:
ntsais muag (); // ntsais muag 실행 실행 tawg; }
rau (int i = 0; kuv <NUM_LIGHTS; kuv ++) {pixels .show (); // 픽셀 픽셀 오브젝트 배열 켜라}
}
/////////////////////////////////////////////////////////////
int CheckAnimMode () {
// 선택 선택 버튼 을 읽어 모드 를 를 결정
////////////////////////////////////////////////////////// /// currentMillis = millis (); // 측정 측정 int nyeem ntawv = digitalRead (animationButton); yog (nyeem! = lastButtonState) {// 입력 핀 으로부터 이전 의 버튼 버튼 상태 와 와 비교 비교 비교 D lastDebounceTime = millis (); // 시간 시간 시간 을 핀 이 마지막 으로 으로 전환 전환 시간 넣음 넣음 넣음
yog ((currentMillis - lastDebounceTime)> debounceDelay) {
yog (nyeem! = buttonState) {// 입력 핀 으로부터 받은 현재 값 과 과 판독 값 과 과
buttonState = nyeem ntawv; // 을 값 을 buttonState 에 대입 대입
yog tias (buttonState == LOW) {// 버튼 상태 가 꺼져 있다면 있다면
QAUV ++; // 모드 모드 1 증가 증가 if (MODE> 3) {MODE = 0; firstRainbow = muaj tseeb; // ness 초기화 상태 켜짐 ness BrightnessFactor = 1; // 값 값 Bright = 15; // 는 는 15}}}}
lastButtonState = nyeem ntawv; // 값 값 을 이전 의 버튼 상태 상태 에
rov MODE; 하고 를 종료 하고 hom 함수 로 값 값 을 리턴 하라}
////////////////////////////////////////////////////////////////////
// animation hom kev ua haujlwm
// rau
tsis muaj dab tsi ntawm () {Serial.println ("ntawm"); // 시리얼 모니터 에 을 써라 rau (int kuv = 0; kuv <NUM_LIGHTS; kuv ++) {color_set (kuv, colorVal [kuv]); // 저항 저항 값 에 따라 컬러 셋팅}}
// Zaj sawv
tsis muaj zaj sawv () {Serial.println ("nag"); // 에 모니터 에 nag 써라 써라 yog (thawj Rainbow) {RainbowSpeed = 0; // ain 속도 초기화 firstRainbow = cuav; // 레인보우 색상 상태 꺼짐 if} yog (millis () - R_previousMillis> R_Interval) {// 흐른 시간 시간 이 이 레인보우 인터벌 보다 보다 _ _ _ R_previousMillis = currentMillis; // bow 시간 을 이전 의 시간 에 넣어 라 bow RainbowSpeed += 10; // 변환 변환 변수 을 10 을 더해라}
rau (int i = 0; i <NUM_LIGHTS; i ++) {color_set (i, (colorVal +RainbowSpeed) % 1023); // 컬러 컬러 셋팅}
}
// Dimming
tsis muaj dabtsis dimming () {Serial.println ("dimm"); // 에 모니터 m dimm 써라 써라 Serial.println (Bright); // 에 에 에 Bright 써라 써라 yog (currentMillis - D_previousMillis> D_Interval) {// 흐른 시간 시간 이 이 디밍 값 보다 크면 _ D_previousMillis = currentMillis; // 라 시간 을 의 디밍 에 에 넣어 라 Bright += BrightnessFactor; // 밝기 에 디밍 값 씩 1 씩 if} yog (Bright 254) {BrightnessFactor = -1 * BrightnessFactor; } Bright = txwv (Bright, 99, 254); 변수 밝기 값 최소값 ~ 99 ~ 최대 값 254 사이 의 의 값 으로 한정 한다
rau (int i = 0; kuv <NUM_LIGHTS; i ++) {dim_color_set (i, Bright); // 컬러 컬러 셋팅}}
// Tsaus muag
void blinking () {Serial.println ("ntsais"); // ink 에 에 blink 써라 써라 써라
rau (int i = 0; i B_Interval ) {// 흐른 시간 값 이 블링크 인터벌 인터벌 보다 보다 크면
B_previousMillis [kuv] = currentMillis; // 시간 시간 을 의 블링크 에 넣어 라 라 _ B_state =! B_state ; // 각 모듈 의 링킹 상태 의 값}}}}} for for} rau (int i = 0; kuv <NUM_LIGHTS; i ++) {if (B_state ) {// 모듈 의 의 블 링킹 상태 가 읽 히면 color_set (kuv, colorVal [kuv]); // {저항 값 따라 else else else} lwm {noColor_set (i); // 않으면 않으면 컬러 셋팅 하지 않음}}
}
////////////////////////////////////////////////////////////////////////////////////////
// tub ntxhais functuation
// xim txheej
void color_set (int index, int colorSenser) {
if (startState [index]) {hue [index] = daim ntawv qhia (colorSenser, 0, 1023, 0, 359); // 0 ~ 1023 을 을 0 ~ 359 값 으로 매핑 가지고 지정 지정 지정 지정 color (colorSenser get) getRGB (hue [index], 255, 255, rgb_colors, index); rau (int i = 0; i <NUMPIXELS; i ++) {pixels [index].setPixelColor (i, pixels [index]. Color (rgb_colors [index] [0], rgb_colors [index] [1], rgb_colors [index] [2])); } // 픽셀 컬러 을 gb rgb_colors 의 r, g, b 으로 else} lwm noColor_set (index); // 셋팅 셋팅 하지 않음}
////// noColor teeb
tsis muaj dab tsi noColor_set (int index) {// 셋팅 셋팅 하지 않는 함수 함수
rau (int i = 0; i <NUMPIXELS; i ++) {pixels [index].setPixelColor (i, pixels [index]. Color (0, 0, 0))); } // 픽셀 컬러 세팅 0, 0, 0 으로 설정}
//// dimColor teeb
void dim_color_set (int index, int BC) {// 컬러 컬러 셋팅 함수 설정 설정
if (startState [index]) {hue [index] = daim ntawv qhia (colorVal [index], 0, 1023, 0, 359); // 0 ~ 1023 을 을 0 ~ 359 값 으로 매핑 을 지정 지정 지정 color color color (colorVal 에) getRGB (hue [index], 255, BC, rgb_colors, index); rau (int i = 0; i <NUMPIXELS; i ++) {pixels [index].setPixelColor (i, pixels [index]. Color (rgb_colors [index] [0], rgb_colors [index] [1], rgb_colors [index] [2])); } /// 픽셀 컬러 을 gb rgb_colors 의 r, g, b 으로 else} lwm yam noColor_set (index); // 셋팅 셋팅 하지 않음}
Kauj Ruam 6: Ua tiav Saib
Pom zoo:
Servo Metronome, Programmable rau Sib Txawv Sib Txawv: 3 Cov Kauj Ruam
Servo Metronome, Programmable rau Sib Txawv Sib Txawv: Ua koj tus kheej metronome. Txhua yam koj xav tau yog Arduino Mega 2560 cov khoom pib thiab lub khoos phis tawj sib xws
Tsiv OLOID - Tsiaj Txawv Txawv Hauv Lub Sijhawm Sib Txawv: 10 Kauj Ruam (nrog Duab)
Tsiv OLOID - Tus Tsiaj Txawv Txawv hauv Lub Sijhawm Sib Txawv: Corona tau hloov pauv peb lub neej: nws xav kom peb nyob nrug deb ntawm lub cev, uas ua rau coj mus rau kev nyob sib nrug. Yog li dab tsi tuaj yeem yog kev daws teeb meem? Tej zaum tus tsiaj? Tab sis tsis yog, Corona los ntawm tsiaj. Cia peb cawm peb tus kheej los ntawm lwm tus Corona 2.0. Tab sis yog tias peb muaj
Cov neeg txawv txawv: 3 Kauj Ruam
Cov Neeg Tsis Txaus Ntseeg: Kev tshoov siab los ntawm Cov Neeg Tsis Zoo Ib Yam, Kuv tsim qhov kev sib tham no rau Arduino kom nyeem cov lus xa los ntawm lub xov tooj ntawm tes thiab ua haujlwm rau ntawm LED lub vaj huam sib luag, sim ua dab tsi tshwm sim hauv koob. Kuv vam tias koj yuav txaus siab! Inspirado na Série Strange Things, criei
LED Qauv (Txawv Lub Teeb Txawv): 3 Cov Kauj Ruam
Cov Qauv LED (Cov Qauv Sib Txawv Sib txawv): Lub Tswv Yim: Kuv txoj haujlwm yog LED xim qauv. Txoj haujlwm muaj 6 LEDs uas txhua lub zog thiab sib txuas lus nrog Arduino. Muaj 4 tus qauv sib txawv uas yuav hla mus thiab yuav ua si hauv lub voj. Thaum ib tus qauv xaus, lwm qhov tak
Feem pua Qhov Sib Txawv Sib Txawv Rau Kev Tiv Thaiv Peb Phaj Hloov Hloov: 7 Kauj Ruam
Feem pua Qhov Sib Txawv Sib Txawv Sib Txuas rau Kev Tiv Thaiv Peb Theem Transformer: Hauv Cov Lus Qhia no, Kuv yuav qhia koj yuav ua li cas Feem pua Sib Txawv Sib Txawv Sib Txuas siv Arduino, uas yog cov tswj hwm microcontroller ntau heev. Lub zog hloov hluav taws xob yog cov cuab yeej tseem ceeb tshaj plaws los hloov lub zog hauv lub zog. Tus nqi los kho tus da