Tabla de contenido:
Video: Muire: efectos ópticos sensibles al sonido: 5 pasos
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Es posible que haya visto un patrón de ondas en el área donde el mosquitero se superpone cuando brilla el sol. Cuando mueve la mosquitera cercana o cambia el ángulo, el patrón de onda también se mueve. Si el patrón con intervalos regulares, así como los mosquiteros de la cama, se superponen repetidamente, este patrón puede ocurrir en cualquier lugar. Esto se llama fenómeno de Muirre (Moire) y el patrón que ocurre se llama patrón de Muirre.
PATRÓN PROJECT_MUIRE
Los patrones de Muir tienen muchos tipos de patrones y características. Este patrón se utiliza para crear nueve sectores y 11 tipos diferentes de patrones de páramo para producir una variedad de efectos ópticos, dependiendo del tamaño del sonido, en marcos de estructura de marco rectangular.
햇빛 이 비칠 때 모기장 이 겹쳐 있는 부위 에 생긴 물결 무늬 를 본 적이 있을 것이다. 가까운 모기장 을 상하 좌우 로 움직 이거나 각도 를 바꾸면 물결 무늬 도 움직인다. 모기장 뿐만 아니라 일정한 간격 을 갖는 무늬 가 반복 해 겹쳐 지면 어디 서든 이런 무늬 가 생길 수 있다. 이 를 무아레 (모아레, Moire) 현상 이라고 부르고, 이때 생기는 무늬 를 무아레 무늬 라고 부른다.
PATRÓN PROJECT_MUIRE
무 아르 패턴 은 다양한 종류 의 패턴 과 특징 을 가지고 있다. 이 패턴 을 9 개 섹터 와 11 개의 각기 다른 만든 무 아르 패턴 을 이용 하여 직사각형 의 액자형 구조 프레임 에 소리 의 크기 에 따라, 각기 다른 무 아르 패턴 의 다양한 착시 효과 체험 을 연출 한다.
Paso 1: ¿Qué materiales se necesitarán?
1. Cuerpo del patrón de muaré
acrílico blanco 5T [940 mm X 840 mm]
Impresión acrílica [tinta acrílica]
2. Patrón de muaré: tipos con forma
Tipo rotacional
un tipo de forma plana
Tipo de hardware
Tipo de agujero negro
Efecto de encogimiento / expansión
un efecto llameante
3. Circuito eléctrico
Arduino Uno x 11
Tabla de pan x 1
Motor paso a paso_28BYJ-48 x 11
ULN2003A x 11
MAX 9814 x 11
1. 무 아뢰 패턴 바디
- 아크릴 5T (acrílico blanco) 940 mm x 840 mm
- 아크릴 인쇄 (tinta negra)
2. 무 아뢰 패턴 의 종류
- 회 전형
- 일자형
- 하드웨어 형
- 빨려 들어가는 효과
- 수축 / 팽창 하는 효과
- 아지랑이 효과
3. 회로 구성
- 아두이 도 나노 보드 (arduino UNO)
- 스텝 모터 (28BYJ-48)
- 스텝 모터 드라이브 (ULN2003A)
- Micrófono 사운드 센서 (max9814)
- 빵판 (Tabla de pan)
- 외부 전원 (Fuente de alimentación 5V 25A)
Paso 2: Figura plana
1. Corte de figura plana
Acrílico blanco 5T (940 mm x 840 mm) X 2
Acrílico transparente 5T (940 mm x 840 mm) X 1
Acrílico transparente 3T (940 mm x 840 mm) X 1
2. Impresión de figuras planas
Impresión acrílica
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. 도면 인쇄
아크릴 인쇄
Paso 3: diagrama de circuito
Principio de funcionamiento del hardware
POTENCIA -> Arduino UNO -> Sensor de amplificación de sonido de micrófono -> Motor Dirver -> Motor paso a paso
Paso 4: codificación
Descripción de la codificación Arduino
1. Conexión del motor paso a paso
Una vez recibida la señal, controlamos el número de pasos 180 grados, conectados al motor paso a paso. Establecemos el número INT para conectarlo al ángulo de rotación del motor paso a paso.
2. Dependiendo del valor del tamaño del sonido, controle la velocidad del motor paso a paso
Emite el pin A0 asociado con el sensor del micrófono, establece el valor de dolor en la salida en el monitor en serie, y si el sensor usa la sintaxis para aumentar la velocidad de rotación del motor paso a paso en 30 cuando el valor de dolor excede 50.
3. Velocidad y dirección de rotación de motores paso a paso que responden a la música.
Cuando la velocidad es de 10 grados y el ruido constante aumenta, gira a 30 grados, lo que induce a los diferentes patrones de rotación a verse diferentes.
CORDONES ARDUINO
#include // motor paso a paso- Biblioteca
const int sampleWindow = 50; // Tiempo de muestreo 50ms unsigned int value; // Valor recibido del sensor de detección de amplificación de sonido variableconst int stepsPerRevolution = 2048; // Bajarlo te ralentizará y aumentará tu velocidad
Stepper myStepper (stepsPerRevolution, 11, 9, 10, 8); // Pin del motor paso a paso int # 1 a Arduino digital 11, 9, 10, 8.
configuración vacía () {
Serial.begin (9600); // Iniciar monitor de serie, velocidad 9600
}
bucle vacío () {
startMillis largo sin firmar = millis (); // Tiempo de muestreo unsigned int peakToPeak = 0; // Amplitud de la señal de voz
unsigned int signalMax = 0; // Establece el tamaño máximo en cero inicialmente sin firmar int signalMin = 1024; // Establezca el tamaño mínimo en 1024 inicialmente
while (millis () - startMillis <sampleWindow) {valor = analogRead (A0); // recupera los datos del sensor de sonido if (value signalMax) // Medidas de tamaño máximo signalMax = value; // Tamaño máximo signalMax guardar else if (valor <signalMin) // Medidas de tamaño mínimo signalMin = value; // Tamaño mínimo sigmalMin save}}
peakToPeak = signalMax - signalMin; // Máximo- Mínimo = Valor de amplitud double volts = (peakToPeak * 5.0) / 1024; // Convertir a voltios = Convertir a tamaño de sonido
int Velocidad = mapa (pico a pico, 0, 600, 1, 30); // Limite el valor peakToPeak de 0 a 600 a 1 a 30.
// Si peakToPeak excede 600, se pierde // Mantén el valor máximo.
myStepper.setSpeed (Velocidad); // Gira la velocidad del motor paso a paso al valor hecho por la función de mapa (1-30) myStepper.step (stepsPerRevolution / 100); // Ángulo de movimiento del motor paso a paso (stepsPerRevolution = 2048) analogWrite (stepsPerRevolution, Speed * 3);
Serial.println (velocidad); // Verificar la velocidad del motor con el monitor serial
}
}
1. 스텝 모터 연결
한번 신호 를 받을 때 스텝 바퀴 수가 180 도 제어 를 하였고, 스텝 모터 와 연결 한
INT 넘버 를 설정 하여 스텝 모터 의 회전 각과 연결 진행
2. 소리 크기 값 에 따라, 스텝 모터 속도 제어
micrófono 센서 와 연결된 A0 핀 을 출력 하고, 시리얼 모니터 에 소리 값 이 출력 되 게끔 설정 후, if 구문 을 사용 하여 센서 에서 소리 값 이 50 이 넘어갈 때 스텝 모터 회전 의 속도 가 30 이 증가 하여, 소리 에 따라 스텝 모터 의 속도 가 제어 되게 함.
3. 음악 에 반응 하는 스텝 모터 의 속도 와 회전 방향
10 만큼 의 속도 가 진행 되다가, 일정 소리 가 커 지게 되면 30 의 속도 로 회전 하여 각기 다른 패턴 의 회전 들이 달리 보이게 연출 되는 것을 유도함.
CORDONES ARDUINO
#include // motor paso a paso 의 라이브러리
const int sampleWindow = 50; // 샘플링 한 시간 50ms valor int sin signo; // 소리 증폭 감지 센서 값 받는 변수 const int stepsPerRevolution = 2048; // *************** 여길 낮추면 느려지고 높이면 빨라짐
Stepper myStepper (stepsPerRevolution, 11, 9, 10, 8); // 스텝 모터 핀 int 1 번 부터 아두 이노 디지털 11, 9, 10, 8 순 으로 장착
oid setup () {
Serial.begin (9600); // 시리얼 모니터 시작, 속도 는 9600
}
bucle vacío () {
startMillis largo sin firmar = millis (); // 샘플링 시작 unsigned int peakToPeak = 0; // 음성 신호 의 진폭
unsigned int signalMax = 0; // 최대 크기 를 초기 에는 0 으로 설정 unsigned int signalMin = 1024; // 최소 크기 를 초기 에는 1024 로 설정
while (millis () - startMillis <sampleWindow) {// 데이터 를 50ms 마다 모으는 while 문 value = analogRead (A0); // 소리 감지 센서 에 더 데이터 받아 오기 if (valor signalMax) // 최대 크기 측정 signalMax = valor; // 최대 크기 signalMax 에 저장 else if (valor <signalMin) // 최소 크기 측정 signalMin = valor; // 최소 크기 sigmalMin 에 저장}}
peakToPeak = signalMax - signalMin; // 최대 - 최소 = 진폭 값 voltios dobles = (peakToPeak * 5.0) / 1024; // 전압 단위 로 변환 = 소리 크기 로 변환
int Velocidad = mapa (pico a pico, 0, 600, 1, 30); // 0 부터 600 까지 뜨는 peakToPeak 값 을 1 부터 30 까지 로 한정
// peakToPeak 의 최대 값 이 600 을 넘어 가면 끊김 // 최대 값 을 잘 잡아 주어야 함 myStepper.setSpeed (Velocidad); // 스텝 모터 의 스피드 를 위 mapa 함수 로 만들어 준 값 으로 회전 시킨다 (1-30) myStepper.step (stepsPerRevolution / 100); // 스텝 모터 가 움직이는 각 (stepsPerRevolution = 2048) analogWrite (stepsPerRevolution, Speed * 3);
Serial.println (velocidad); // 시리얼 모니터 로 모터 의 속도 를 확인 하겠다
}