Πίνακας περιεχομένων:
- Βήμα 1: Υλικά
- Βήμα 2: Σχέδιο κατασκευής
- Βήμα 3: Υλικό: Σχεδιασμός κυκλωμάτων
- Βήμα 4: Υλικό: Ακρυλική κοπή
- Βήμα 5: Κώδικας προγραμματισμού Arduino
- Βήμα 6: Μια τελική ματιά
Βίντεο: Dot Light Pattern: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Ξεκίνησα με την ιδέα "Μπορώ να ελέγξω το φως με τα χέρια μου και να εκφράσω τη δική μου θέληση;"
Πρόκειται για ένα «Dot Light Pattern» που σας επιτρέπει να δημιουργήσετε μόνοι σας τα δικά σας χρώματα, να σχεδιάσετε τα δικά σας σχέδια με αυτά τα χρώματα και να ζήσετε διάφορα εφέ κινούμενων σχεδίων.
Βήμα 1: Υλικά
- Arduino UNO x 13
- Λωρίδα LED WS2901 ή WS2811 pixel (130 LEDS)
- Διακόπτης κουμπιού x 1
- Διακόπτης snap x 65
- Δυνατόμετρο x 65
- Καλώδιο ουράνιου τόξου
- Ισχυρό SMPS
- Καλώδιο αγωγού
- Ακρυλική διαφανής στρογγυλή ράβδος (διάμετρος 30 mm)
- Μαύρο χρώμα Ακρυλική σανίδα (5T) (500mm*790mm) x 2, (500mm*35mm) x 2, (790mm*35mm) x 2
Βήμα 2: Σχέδιο κατασκευής
Βήμα 3: Υλικό: Σχεδιασμός κυκλωμάτων
-
Κόψτε την ακρυλική πλάκα όπως η παραπάνω δομή. (δείτε βήμα 2)
- Ένα κομμάτι LED νεο-εικονοστοιχείων τοποθετείται στο επάνω και κάτω μέρος της οπής του μετρητή δυναμικότητας και συνολικά 65 ζεύγη LED νεο-εικονοστοιχείων είναι προσαρτημένα.
- Ένα ζευγάρι LED neo-pixel συνδέεται μεταξύ τους για να σχηματίσει ένα μόνο pin Arduino.
- Τοποθετήστε 65 μετρητές ισχύος στις οπές του μετρητή ισχύος. (Τοποθετήστε το στην αντίθετη πλευρά μιας νεο-εικονοστοιχείης επιφάνειας.)
- Συνδέστε 65 διακόπτες για να ταιριάζουν με τις οπές του διακόπτη.
- Συνολικά δεκατρείς UNO Arduino είναι προσαρτημένες σε καθεμία από τις δεκατρείς ζώνες, προκειμένου να δέσουν πέντε κομμάτια από 65 κομμάτια υλικού σε ένα Arduino UNO.
- Όπως φαίνεται στη συνημμένη φωτογραφία, συνδέστε τα καλώδια μέτρησης, τους διακόπτες και τα LED neo-pixel στις ακίδες του Arduino UNO με σύρμα. (δείτε βήμα 2)
-
Οι ακίδες GND και 5V πολλών UNO του Arduino συλλέγονται σε καλώδια καλωδίων και στη συνέχεια συνδέονται με εξωτερική τροφοδοσία. (δείτε βήμα 2)
- Αφαιρέστε τη σκόνη με πίεση αέρα.
Βήμα 4: Υλικό: Ακρυλική κοπή
- Κόψτε την ακρυλική ράβδο σε μήκος 50mm.
- Η μία πλευρά της ακρυλικής ράβδου τρυπιέται στο μέγεθος και το βάθος για να ταιριάζει με το τμήμα ελεγκτή του μετρητή ισχύος.
- Η ακρυλική ράβδος κόβεται ελαφρώς ευρύτερα από την τρύπα για ένα διάκενο που μπορεί να χωρέσει καλά στο μετρητή δύναμης.
- Η άλλη πλευρά δίνει λίγο γυαλόχαρτο έτσι ώστε το φως να μεταδίδεται τακτοποιημένα.
Βήμα 5: Κώδικας προγραμματισμού Arduino
www.kasperkamperman.com/blog/arduino/ardui…
κωδικός 'hsb to rgb' 를 참고 한 사이트
#περιλαμβάνω
// '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 = {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)}; //// 네오 픽셀 을 사용 하기 위해 위해 하나. // 첫번째 인자 값 은 네오 픽셀 의 LED 의 개수 // 두번째 인자 값 은 바뀌는 바뀌는 바뀌는 바뀌는 번호 번호 번호 번호 바뀌는 바뀌는 바뀌는
//////////////////////////////////////////////////////////////
////// 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, }; //
void getRGB (int hue, int sat, int val, int colors [5] [3], int index) {
val = dim_curve [val]; sat = 255 - dim_curve [255 - sat];
// 색조, 및 밝기 (HSB /HSV) 를 RGB 로 변환
// dim_curve 는 밝기 값 및 채도 (반전) 에서만 사용 됩니다. // 이것은 가장 자연스럽게 보입니다.
int r?
int g? int β? int βάση?
αν (κάθισε == 0) {
χρώματα [δείκτης] [0] = val; χρώματα [δείκτης] [1] = val; χρώματα [δείκτης] [2] = val; } αλλο {
βάση = ((255 - sat) * val) >> 8;
διακόπτης (απόχρωση / 60) {
περίπτωση 0: r = val; g = (((val - βάση) * απόχρωση) / 60) + βάση. b = βάση? Διακοπή;
περίπτωση 1:
r = (((val - βάση) * (60 - (απόχρωση % 60))) / 60) + βάση. g = val; b = βάση? Διακοπή;
περίπτωση 2:
r = βάση. g = val; b = (((val - βάση) * (απόχρωση % 60)) / 60) + βάση. Διακοπή;
περίπτωση 3:
r = βάση. g = (((val - βάση) * (60 - (απόχρωση % 60))) / 60) + βάση. b = val? Διακοπή;
περίπτωση 4:
r = (((val - βάση) * (απόχρωση % 60)) / 60) + βάση. g = βάση? b = val? Διακοπή;
περίπτωση 5:
r = val; g = βάση? b = (((val - βάση) * (60 - (απόχρωση % 60))) / 60) + βάση. Διακοπή; }
χρώματα [δείκτης] [0] = r;
χρώματα [δείκτης] [1] = g; χρώματα [δείκτης] [2] = b; }
}
int rgb_colors [NUM_LIGHTS] [3]; // 네오 픽셀 오브젝트 갯수 마다 rgb χρώμα
int hue [NUM_LIGHTS]; // 네오 픽셀 오브젝트 갯수 ue απόχρωση 선언 int sat [NUM_LIGHTS]; // 네오 픽셀 오브젝트 갯수 마다 명도 선언 int brignt [NUM_LIGHTS]; // 네오 픽셀 오브젝트 갯수 마다 밝기
// 일반 변수 선언
int fillonSwitch = {8, 9, 10, 11, 12}; // on/off 버튼 핀 ole boolean startState = {false, false, false, false, false, false}; // ενεργοποίηση/απενεργοποίηση 변수
const int colorPin = {A0, A1, A2, A3, A4}; // 가변 저항 핀 번호
int colorVal = {0, 0, 0, 0, 0}; // 가변 저항 초기 값
int animationButton = 7; // 애니메이션 모드 변환 버튼 핀
/////////////////////////////////////////////////
// 애니메이션 모든 변환 을 위한 버튼 디 선언 선언 디 // 디 바운싱; Button 시간 내 많은 이벤트 가 발생 대한 대해서 button 해결 해결 해결 해결 해결 해결 button int buttonState; // 입력 핀 으로부터 의 현재 판독 값 int lastButtonState = HIGH; // 이전 의 판독 값 은 켜진 로 로 χωρίς υπογραφή long lastDebounceTime = 0; // 출력 핀 이 마지막 으로 전환 된 은 은 0 으로 ανυπόγραφο μακρύ debounceDelay = 50; // 디 바운싱 타임 설정; 출력 이 깜빡 한다 한다 MO int MODE = 0; // 애니메이션 모드 변수
int B_Interval [5]; // 블 링킹 을 위한 각 모듈 의 의
int B_Min = 100; // 블 링킹 최단 속도; int B_Max = 500; // 블 링킹 최장 속도; int R_Interval = 50; // 레인보우 애니메이션 속도 변수 int D_Interval = 10; // 디밍 속도 변수
boolean B_state [5]; // 블 링킹 을 위한 각 모듈 모듈 의
///////////////////////////////////////////////////////
// 멀티 테스 킹 애니메이션 을 위한 시간 시간
ανυπόγραφο μακρύ ρεύμαMillis; // 현재 시간 변수
ανυπόγραφο μακρύ B_previousMillis [5]; // 각 모듈 의 블 링킹 타이머 ανυπόγραφο μακρύ DR_Millis [5]; // 각 모듈 의 디밍 랜덤 예비 (예비) ανυπόγραφο μακρύ R_previousMillis; // 레인보우 타이머 ανυπόγραφο μακρύ D_previousMillis; // 디밍 타이머
boolean firstRainbow = true; // 레인보우 색상 초기화 상태 변수
int RainbowSpeed; // 레인보우 변환 변수
int Bright = 100; // 디밍 초기 값 int BrightnessFactor = 1; // 디밍 증감 값 ////////////////////////////////////////// ///////////////////////////////////////
void setup () {
για (int i = 0; i <NUM_LIGHTS; i ++) {pixels .begin (); // 네오 픽셀 오브젝트 초기화}
// 버튼 인풋 설정
για (int i = 0; i <NUM_LIGHTS; i ++) {pinMode (startSwitch , INPUT_PULLUP); // ενεργοποίηση/απενεργοποίηση pin 인풋 설정} pinMode (animationButton, INPUT_PULLUP); // 애니메이션 버튼 인풋 설정
για (int i = 0; i <NUM_LIGHTS; i ++) {B_Interval = int (τυχαία (B_Min, B_Max)); // 모듈 별 블 링킹 랜덤 인터발 (인터발) 생성 생성}
Serial.begin (9600); // 통신 설정
}
void loop () {
MODE = CheckAnimMode (); // 모드 에 애니메이션 체크 모드 함수 를
// 버튼 과 가변 저항 을 값 을 각각.
για (int i = 0; i <NUM_LIGHTS; i ++) {startState =! digitalRead (startSwitch ); // ενεργοποίηση/απενεργοποίηση 을 에서 읽은 값 의 반대 을 startState 에 넣어 준다 // startState = digitalRead (startSwitch ); colorVal = analogRead (colorPin ); // 가변 저항 에서 읽은 값 을 가변 저항 초기 값 에 넣는다 넣는다}
διακόπτης (MODE) {// 애니메이션 함수 스위치 문
περίπτωση 0: on (); // στο 실행 실행 διάλειμμα; // 조건문 에서 빠져 나가라
περίπτωση 1:
ΟΥΡΑΝΙΟ ΤΟΞΟ(); // ουράνιο τόξο 실행 실행 διάλειμμα;
περίπτωση 2:
dimming ()? // εξασθένιση 실행 실행 διάλειμμα;
περίπτωση 3:
αναβοσβήνει (); // αναβοσβήνει 실행 실행 διάλειμμα; }
για (int i = 0; i <NUM_LIGHTS; i ++) {pixels . show (); // 네오 픽셀 오브젝트 배열 켜라}
}
/////////////////////////////////////////////////////////////
int CheckAnimMode () {
// 애니메이션 선택 버튼 을 읽어 모드 를 를.
///////////////////////////////////////////////////////// /// currentMillis = millis (); // 시간 측정 int ανάγνωση = digitalRead (animationButton); εάν (ανάγνωση! = lastButtonState) {// 입력 핀 으로부터 이전 의 버튼 의 상태 비교 비교 비교 lastDebounceTime = millis (); // 현재 시간 을 출력 핀 이 마지막 으로 전환 된 시간 넣음 넣음 넣음}
if ((currentMillis - lastDebounceTime)> debounceDelay) {
εάν (ανάγνωση! = buttonState) {// 입력 핀 으로부터 받은 현재 값 과 판독
buttonState = ανάγνωση; // 판독 값 을 buttonState 에
εάν (buttonState == LOW) {// 버튼 상태 가 꺼져 있다면
MODE ++; // 버튼 모드 1 씩 증가 if (MODE> 3) {MODE = 0; firstRainbow = true; // 레인보우 색상 초기화 상태 켜짐 BrightnessFactor = 1; // 디밍 증감 값 Φωτεινό = 15; // 밝기 는 15}}}}
lastButtonState = ανάγνωση; // 판독 값 을 이전 의 버튼 상태 상태
επιστροφή MODE? Λειτουργία 함수 를 종료 하고 함수 로 값 을 하라 하라}
////////////////////////////////////////////////////////////////////
// λειτουργία λειτουργίας animation
//επί
void on () {Serial.println ("on"); // 시리얼 모니터 에 σε 을 써라 για (int i = 0; i <NUM_LIGHTS; i ++) {color_set (i, colorVal ); // 가변 저항 값 에 따라 컬러 셋팅}}}
//ΟΥΡΑΝΙΟ ΤΟΞΟ
void rainbow () {Serial.println ("βροχή"); // 시리얼 모니터 에 βροχή 을 써라 αν (firstRainbow) {RainbowSpeed = 0; // 레인보우 속도 초기화 firstRainbow = false; // 레인보우 색상 초기화 상태 꺼짐} if (millis () - R_previousMillis> R_Interval) {// 흐른 시간 값 이 레인보우 인터벌 값 _ R_previousMillis = currentMillis; // 현재 시간 을 이전 의 레인보우 시간 에 라 라 RainbowSpeed += 10; // 레인보우 변환 변수 에 10 을 더해라}
για (int i = 0; i <NUM_LIGHTS; i ++) {color_set (i, (colorVal +RainbowSpeed) % 1023); // 레인보우 컬러 셋팅}
}
// Dimming
void dimming () {Serial.println ("dimm"); // 시리얼 모니터 에 dimm 을 써라 Serial.println (Bright); // 시리얼 모니터 에 Bright 를 써라 if (currentMillis - D_previousMillis> D_Interval) {// 흐른 시간 값 이 디밍 인터벌 값 _ D_previousMillis = currentMillis; // 현재 시간 을 이전 의 디밍 시간 에 ight Bright += BrightnessFactor; // 밝기 에 디밍 증감 값 1 씩 올려라} εάν (Bright 254) {BrightnessFactor = -1 * BrightnessFactor; } Bright = περιορισμός (Bright, 99, 254); // 변수 밝기 값 을 최소값 99 ~ 최대 값 254 사이 의 값 으로 한정
για (int i = 0; i <NUM_LIGHTS; i ++) {dim_color_set (i, Bright); // 디밍 컬러 셋팅}}
// Αναβοσβήνει
void blinking () {Serial.println ("blink"); // 시리얼 모니터 에 αναβοσβήνει 를 써라
για (int i = 0; i B_Interval ) {// 흐른 시간 값 이 이 블링크 값 보다
B_previousMillis = currentMillis; // 현재 시간 을 이전 의 블링크 시간 넣어 _ B_state =! B_state ; // 각 모듈 의 블 링킹 상태 변수 값 반대 값 을 대입 하라 하라}}} για (int i = 0; i <NUM_LIGHTS; i ++) {if (B_state ) {// 모듈 의 블 링킹 읽 히면 color_set (i, colorVal ); // 가변 저항 값 에 따라 컬러 셋팅} else {noColor_set (i); // 읽히지 않으면 컬러 셋팅 하지 않음}}
}
////////////////////////////////////////////////////////////////////////////////////////
// βασικός συντελεστής
// σύνολο χρωμάτων
void color_set (int index, int colorSenser) {
if (startState [index]) {hue [index] = map (colorSenser, 0, 1023, 0, 359); // 0 ~ 1023 을 0 ~ 359 값 으로 매핑 한 값 을 가지고 color color color (colorSenser) getRGB (απόχρωση [δείκτης], 255, 255, rgb_colors, index); για (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])); } // 픽셀 컬러 셋팅 을 rgb_colors 의 r, g, b 으로 설정} else noColor_set (index); // 컬러 셋팅 하지 않음}
////// noColor set
void noColor_set (int index) {// 컬러 셋팅 하지 않는 함수
για (int i = 0; i <NUMPIXELS; i ++) {pixels [index].setPixelColor (i, pixels [index]. Color (0, 0, 0)); } // 픽셀 컬러 세팅 을 0, 0, 0 설정 설정}
//// σετ dimColor
void dim_color_set (int index, int BC) {// 디밍 컬러 셋팅 함수
if (startState [index]) {hue [index] = map (colorVal [index], 0, 1023, 0, 359); // 0 ~ 1023 을 0 ~ 359 으로 매핑 한 값 color color color color color (colorVal 에) getRGB (απόχρωση [δείκτης], 255, π. Χ., rgb_colors, index); για (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])); } /// 픽셀 컬러 셋팅 을 rgb_colors 의 r, g, b 으로 설정} αλλιώς noColor_set (ευρετήριο); // 컬러 셋팅 하지 않음}
Βήμα 6: Μια τελική ματιά
Συνιστάται:
BookWorm Light-Up Book Light και Bookmark: 13 βήματα (με εικόνες)
BookWorm Light-Up Book Light και Bookmark: Κάντε αυτόν τον διασκεδαστικό σελιδοδείκτη bookworm που λειτουργεί ως φως βιβλίου! Θα το εκτυπώσουμε, θα το κόψουμε, θα το χρωματίσουμε και θα το διακοσμήσουμε και τον χρησιμοποιούν για να φωτίζουν τη νύχτα, ώστε να μπορείτε να διαβάζετε στο σκοτάδι. Έχει φτιαχτεί με λίγα υλικά και κάνει μια εξαιρετική πρώτη
Φοβερό Light Halloween Light Show με μουσική!: 5 βήματα
Φοβερό Halloween Light Show With Music!: Για αυτό το έργο, έφτιαξα μια φωτεινή οθόνη Halloween με μερικά ειδικά φώτα που ονομάζονται pixel RGB που συγχρονίζονται με 4 αποκριάτικα τραγούδια. Αν θέλετε να δείτε αυτές τις φωτεινές εκπομπές και τις μελλοντικές, πηγαίνετε εδώ. Αυτή η φωτεινή παράσταση μπορεί να είναι δύσκολο να χτιστεί
D4E1 - Artmakers: Paper Pattern Maker: 8 Steps
D4E1 - Artmakers: Paper Pattern Maker: Είμαστε 4 μαθητές βιομηχανικού σχεδιασμού προϊόντων από τον Howest και αυτός είναι ο δημιουργός μας. Τι είναι ένας δημιουργός τέχνης και γιατί. Ένας δημιουργός τέχνης είναι μια απλή μηχανή που επιτρέπει στα παιδιά με γνωστικές αναπηρίες να κάνουν διασκεδαστικά υλικά κατασκευής ή να προετοιμάσουν μια απλή εργασία που
Κάνοντας ένα LED Night Light W/ Star Pattern: 8 βήματα (με εικόνες)
Δημιουργία νυχτερινής λυχνίας LED W/ Star Pattern: Αυτό το νυχτερινό φως LED διαθέτει μοτίβο αστεριού και φωτίζει ένα σκοτεινό δωμάτιο με μαγικό τρόπο. Χρησιμοποίησα ipe για το ξύλο, ωστόσο οποιοδήποτε σκούρο ξύλο ή βαμμένο MDF για παράδειγμα θα λειτουργούσε καλά. Αυτό είναι ένα πραγματικά διασκεδαστικό έργο και θα ήταν υπέροχο ως φωτισμός προφοράς
Robo Blanket: Crochet a Blanket Using a Cross Stitch Pattern .: 3 Steps (with Pictures)
Robo Blanket: Crochet a Blanket Using a Cross Stitch Pattern .: Μου αρέσει το βελονάκι. Το κάνω από μικρή. Αλλά μόλις πρόσφατα ανακάλυψα πώς να πλέκω φωτογραφίες. Τώρα θα σας δείξω πώς. Θα χρειαστείτε: Νήματα σε διαφορετικά χρώματα. Ένα μοτίβο σταυροβελονιάς Ένα βελονάκι. (Χρησιμοποίησα μέγεθος H) Μπορείτε να πάρετε cros