Obsah:
Video: Muire: Optické efekty citlivé na zvuk: 5 kroků
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Možná jste viděli vlnový vzor v oblasti, kde se moskytiéra překrývá, když svítí slunce. Když pohnete nedalekou moskytiérou nebo změníte úhel, pohybuje se také vlnový vzor. Pokud se vzor s pravidelnými intervaly stejně jako ložní sítě opakovaně překrývá, může k tomuto vzoru dojít kdekoli. Toto se nazývá fenomén Muirre (Moire) a vzor, který se vyskytuje, se nazývá Muirreův vzor.
VZOR PROJECT_MUIRE
Muirovy vzory mají mnoho druhů vzorů a charakteristik. Tento vzor se používá k vytvoření devíti sektorů a 11 různých typů vřesovištních obrazců k produkci různých optických efektů, v závislosti na velikosti zvuku, na rámcích obdélníkové rámové struktury.
것이다 이 비칠 때 모기장 이 겹쳐 있는 부위 에 생긴 물결 무늬 를 를 본 적이 있을 것이다. 움직인다 모기장 을 상하 좌우 로 움직 이거나 각도 를 바꾸면 물결 무늬 도 움직인다. 있다 뿐만 아니라 일정한 간격 을 갖는 무늬 가 반복 해 겹쳐 지면 어디 어디 서든 이런 가 생길 생길 수 있다. 이 를 무아레 (모아레, Moire) 현상 이라고 부르고, 이때 생기는 무늬 를 무아레 무늬 라고 부른다.
VZOR PROJECT_MUIRE
있다 아르 패턴 은 다양한 종류 의 패턴 과 특징 을 가지고 있다 있다. 개 패턴 을 9 개 섹터 와 11 개의 각기 다른 만든 무 아르 패턴 을 이용 하여 직사각형 의 액자형 구조 프레임 에 소리 소리 의 크기 따라 각기, 각기 다른 무 아르 아르 패턴 의 착시 효과 체험 을 한다
Krok 1: Jaké materiály budou potřeba?
1. Tělo vzoru Moire
bílý akryl 5T [940 mm X 840 mm]
Akrylový tisk [akrylový inkoust]
2. Moire Pattern - tvarované typy
Rotační typ
plochý typ
Typ hardwaru
Typ černé díry
Efekt zmenšení / roztažení
planoucí efekt
3. Elektrický obvod
Arduino Uno x 11
Chlebová deska x 1
Krokový motor_28BYJ-48 x 11
ULN2003A x 11
MAX9814 x 11
1. 무 아뢰 패턴 바디
- 아크릴 5T (bílý akryl) 940 mm x 840 mm
- Black 인쇄 (černý inkoust)
2. 무 아뢰 패턴 의 종류
- 회 전형
- 일자형
- 하드웨어 형
- 빨려 들어가는 효과
- 수축 / 팽창 하는 효과
- 아지랑이 효과
3. 회로 구성
- 아두이 도 나노 보드 (arduino UNO)
- 스텝 모터 (28BYJ-48)
- UL 모터 드라이브 (ULN2003A)
- Mikrofon 사운드 센서 (max. 9814)
- 빵판 (Bread Board)
- 외부 전원 (Napájení 5V 25A)
Krok 2: Planární obrázek
1. Rovinné řezání postavy
Bílý akryl 5T (940 mm x 840 mm) X 2
Průhledný akryl 5T (940 mm x 840 mm) X 1
Průhledný akryl 3T (940 mm x 840 mm) X 1
2. Tisk planárních postav
Akrylový tisk
1. 도면 커팅
아크릴 아크릴 5T (940 mm x 840 mm) X 2
아크릴 아크릴 5T (940 mm x 840 mm) X 1
아크릴 아크릴 3T (940 mm x 840 mm) X 1
2. 도면 인쇄
아크릴 인쇄
Krok 3: Schéma zapojení
hardware Princip činnosti
POWER -> Arduino UNO -> Senzor zesílení zvuku mikrofonu -> Motor Dirver -> Krokový motor
Krok 4: Kódování
Popis kódování Arduino
1. Připojení krokového motoru
Jakmile jsme obdrželi signál, řídili jsme počet kroků 180 stupňů připojených k krokovému motoru. Nastavte číslo INT pro připojení k úhlu otáčení krokového motoru.
2. V závislosti na hodnotě velikosti zvuku ovládejte otáčky krokového motoru
Vyvede pin A0 spojený se snímačem mikrofonu, nastaví hodnotu bolesti na výstup na sériovém monitoru a pokud senzor použije syntaxi ke zvýšení rychlosti otáčení krokového motoru o 30, když hodnota bolesti překročí 50.
3. Rychlost a směr otáčení krokových motorů, které reagují na hudbu
Když je rychlost 10 stupňů a konstantní hluk se zvýší, otáčí se o 30 stupňů, což způsobí, že různé vzory otáčení vypadají odlišně.
ARDUINO KÓDOVÁNÍ
#include // krokový motor- knihovna
const int sampleWindow = 50; // Doba vzorkování 50ms nepodepsaná int hodnota; // Hodnota senzoru zesílení zvuku přijatá proměnná kontrast int krokyPerRevolution = 2048; // Jeho snížení vás zpomalí a zrychlí
Stepper myStepper (stepsPerRevolution, 11, 9, 10, 8); // Pin krokového motoru int #1 na Arduino digital 11, 9, 10, 8.
neplatné nastavení () {
Serial.begin (9600); // Spusťte sériový monitor, rychlost 9600
}
prázdná smyčka () {
bez znaménka dlouhý startMillis = millis (); // Doba vzorkování bez znaménka int peakToPeak = 0; // Amplituda hlasového signálu
nepodepsaný int signalMax = 0; // Nastaví maximální velikost na nulu zpočátku bez znaménka int signalMin = 1024; // Nejprve nastavte minimální velikost na 1024
while (millis () - startMillis <sampleWindow) {value = analogRead (A0); // načíst data zvukového senzoru if (hodnota signalMax) // Maximum Size Measurements signalMax = hodnota; // Maximum Size signalMax save else if (hodnota <signalMin) // Minimal Size Measurements signalMin = value; // Minimální velikost sigmalMin save}}
peakToPeak = signalMax - signalMin; // Maximum- Min = Amplitude Value double volts = (peakToPeak * 5.0) / 1024; // Převést na volty = Převést na velikost zvuku
int Rychlost = mapa (peakToPeak, 0, 600, 1, 30); // Omezení hodnoty peakToPeak od 0 do 600 až 1 až 30.
// Pokud peakToPeak překročí 600, je ztracen // Ponechejte maximální hodnotu.
myStepper.setSpeed (rychlost); // Otočení rychlosti krokového motoru na hodnotu vytvořenou funkcí mapy (1-30) myStepper.step (stepsPerRevolution / 100); // Úhel pohybu krokového motoru (stepsPerRevolution = 2048) analogWrite (stepsPerRevolution, Speed*3);
Serial.println (rychlost); // Zkontrolujte otáčky motoru pomocí sériového monitoru
}
}
1. 스텝 모터 연결
수가 신호 를 받을 때 스텝 바퀴 수가 180 도 제어 를 하였고, 스텝 모터 와 연결 한
INT 넘버 를 설정 하여 스텝 모터 의 회전 각과 연결 진행
2. 소리 크기 값 에 따라, 스텝 모터 속도 제어
mikrofon 센서 와 연결된 A0 핀 을 출력 하고, 시리얼 모니터 에 소리 값 이 출력 되 게끔 설정 if 50 이 넘어갈 때 스텝 모터 회전 의 속도 가 30 이 증가 하여, 소리 에 따라 함 모터 의 속도 가 제어 되게 함.
3. 음악 에 반응 하는 스텝 모터 의 속도 와 회전 방향
10 만큼 의 속도 가 진행 되다가, 일정 소리 가 커 지게 되면 의 30 의 속도 로 회전 하여 각기 다른 패턴 의 회전 들이 달리 보이게 연출 되는 되는 유도함 유도함
ARDUINO KÓDOVÁNÍ
#include // krokový motor 의 라이브러리
const int sampleWindow = 50; // 샘플링 한 시간 50ms bez znaménka int hodnota; // 소리 증폭 감지 센서 값 받는 변수 const int stepsPerRevolution = 2048; // *************** 여길 낮추면 느려지고 높이면 빨라짐
Stepper myStepper (stepsPerRevolution, 11, 9, 10, 8); // 스텝 모터 핀 int 1 번 부터 아두 이노 디지털 11, 9, 10, 8 순 으로 장착
oid setup () {
Serial.begin (9600); // 시리얼 모니터 시작, 속도 는 9600
}
prázdná smyčka () {
bez znaménka dlouhý startMillis = millis (); // 샘플링 시작 nepodepsané int peakToPeak = 0; // 음성 신호 의 진폭
nepodepsaný int signalMax = 0; // 최대 크기 를 초기 에는 0 으로 설정 nepodepsané int signalMin = 1024; // 최소 크기 를 초기 에는 1024 로 설정
while (millis () - startMillis <sampleWindow) {// 데이터 를 50ms 마다 모으는 while 문 value = analogRead (A0); // 소리 감지 센서 에 더 데이터 받아 오기 if (hodnota signalMax) // 최대 크기 측정 signalMax = hodnota; // 최대 크기 signalMax 에 저장 else if (hodnota <signalMin) // 최소 크기 측정 signalMin = hodnota; // 최소 크기 sigmalMin 에 저장}}
peakToPeak = signalMax - signalMin; // 최대- 최소 = 진폭 값 dvojité volty = (peakToPeak * 5.0) / 1024; // 전압 단위 로 변환 = 소리 크기 로 변환
int Rychlost = mapa (peakToPeak, 0, 600, 1, 30); // 0 부터 600 까지 뜨는 peakToPeak 값 을 1 부터 30 까지 로 한정
// peakToPeak 의 최대 값 이 600 을 넘어 가면 끊김 // 최대 값 을 잘 잡아 잡아 주어야 S myStepper.setSpeed (rychlost); // 스텝 모터 의 스피드 를 위 mapa 함수 로 만들어 준 값 으로 회전 시킨다 (1-30) myStepper.step (stepsPerRevolution / 100); // 스텝 모터 가 움직이는 각 (stepsPerRevolution = 2048) analogWrite (stepsPerRevolution, Speed*3);
Serial.println (rychlost); // 시리얼 모니터 로 모터 의 속도 를 확인 하겠다
}