Índice:
- Etapa 1: Coisas usadas neste projeto
- Etapa 2: Conexão de Hardware
- Etapa 3: Programação de software
- Etapa 4: Operação
Vídeo: Luz de alegria da música de Natal: 4 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Feliz Natal! Quer ter uma árvore de natal que possa interagir com você?
Etapa 1: Coisas usadas neste projeto
Componentes de hardware
- Seeeduino V4.2
- Escudo de Base V2
- Grove - Sensor de Movimento PIR Ajustável
- Grove - Sensor de Loudness
- Grove - Faixa LED WS2813 RGB à prova d'água - 60 LED / m - 1m
Aplicativos de software e serviços online
IDE Arduino
Etapa 2: Conexão de Hardware
Conecte o sensor PIR, o sensor de intensidade e a faixa de LED às portas D2, A0 e D6 da blindagem da base separadamente. Conecte a Base Shield ao Seeduino, tudo pronto.
Etapa 3: Programação de software
As bibliotecas a seguir precisam ser instaladas antes de programar, baixe e importe-as para o seu Arduino IDE manualmente:
- Led_Strip
- MsTimer2
- Arduino_Vector
Para tornar o código mais conciso, nós o empacotamos. A classe CheerLight é a classe de aplicativo deste projeto.
aplicação de classe:: CheerLight
: public application:: interface:: IApplication {public: void setup (void); loop vazio (vazio); void setPIRSensorPin (uint8_t pin); void setLoudnessSensorPin (uint8_t pin); void measureSensors (void); void changeAnimation (void * args); void changeSpeed (void * args); void changeColor (void * args); aplicativo estático:: CheerLight * getInstance (void); protegido: driver:: LEDStrip _ledStrip; driver:: PIRSensor _pirSensor; driver:: LoudnessSensor _loudnessSensor; uint8_t _animation; middleware:: Delegate _detectedDelegate; middleware:: Delegate _absoluteLoudnessDelegate; middleware:: Delegate _relativeLoudnessDelegate; CheerLight (vazio); aplicativo estático:: CheerLight _instance; };
A classe CheerLight foi projetada por Singleton Patterns, o que significa que há apenas uma instância para ela, você pode chamar CheerLight:: getInstance () para essa instância. Se a conexão de seus sensores for diferente da conexão de hardware, você pode alterá-los chamando os métodos setPIRSensorPin () e setLoudnessSensorPin ().
Recomendamos chamar o método measureSensors () na interrupção do cronômetro para tornar os sensores medidos oportunos, mas chamar os métodos changeAnimation (), changeSpeed () ou changeColor () manualmente não são necessários. Eles serão chamados por meio de Delegados quando os sensores forem medidos.
O que é um delegado?
Como todos sabemos, podemos declarar um ponteiro de função e fazer com que ele aponte para uma função em C:
void func1 (void);
void (* pFunc) (void) = func1;
e usá-lo para chamar a função apontada
pFunc ();
Mas existem diferenças em C ++, se você tentar compilar o código a seguir:
classe A {
public: void func1 (void); }; void (* pFunc) (void) = & A:: func1;
o compilador relatará um erro de conversão de tipo, aqui está o exemplo certo:
void (A:: * pFunc) (void) = & A:: func1;
Quando tentamos usá-lo para chamar esse método, erramos novamente. A razão para esse erro é que um método-objeto deve ser chamado por um objeto. Então, criamos um objeto para chamá-lo:
A a;
a. * pFunc ();
Desta vez não há problema. Portanto, há a classe Delegate em Delegate.h.
modelo
classe middleware:: Delegate: public middleware:: interface:: IDelegate {public: Delegate (objeto T *, void (método T:: *) (void *)); void invoke (void * args); protegido: T * _object; void (método T:: * _) (void *); }; template embutido middleware:: Delegate:: Delegate (T * objeto, void (T:: * método) (void *)): _object (objeto), _method (método) {} template embutido void middleware:: Delegate:: invoke (void * args) {(_object -> * _ método) (args); }
Como a classe Delegate é uma classe de modelo, o que significa que Delegate é uma diferença para Delegate, como fazer com que sejam apontados por um ponteiro do mesmo tipo? A resposta é interface, portanto, há interface IDelegate em IDelegate.h.
class middleware:: interface:: IDelegate {
public: virtual void invoke (void * args) = 0; };
Na classe PIR Sensor e Loudness Sensor, há uma variável chamada _delegates usada para armazenar o ponteiro de Delegates, e há um método chamado invokeAllDelegates () usado para invocar todos os Delegates em _delegates, ele será chamado no método measure ().
NOTA: Métodos de delegação, como changeAnimation (), changeSpeed () e changeColor () serão chamados na interrupção timer2, então NÃO use delay () ou outra função baseada em interrupção nela.
Recomendado:
Show de luzes de natal sincronizado com música !: 4 etapas
Show de luzes de natal sincronizado com música !: Neste instrutível, vou mostrar como fazer um show de luzes de natal sincronizado com música de Natal usando pixels RGB. Não deixe esse nome te assustar! Não é muito difícil aprender a fazer isso. Vou avisá-lo que isso pode ser bastante
Sensor de efeito Hall: Caixa de música de Natal: 4 etapas
Sensor de efeito Hall: Christmas Music Box: Esta é uma caixa de música que toca música uma vez aberta (assista ao vídeo!). É uma maneira ótima, especial e única de embrulhar seus presentes para sua pessoa especial! Ele usa um sensor de efeito Hall para verificar se a tampa foi aberta por falta de campo magnético a
Luz reativa para música -- Como tornar uma luz reativa para música super simples para tornar a área de trabalho incrível: 5 etapas (com imagens)
Música reativa luz || Como fazer música super simples luz reativa para tornar a área de trabalho incrível .: Ei, e aí galera, hoje vamos construir um projeto muito interessante. Hoje vamos construir uma luz reativa musical. O led mudará seu brilho de acordo com o baixo, que na verdade é um sinal de áudio de baixa frequência. É muito simples de construir. Vamos
Caixa de Natal: Arduino / ioBridge Luzes de Natal controladas pela Internet e show de música: 7 etapas
Xmas-box: Arduino / ioBridge Luzes de Natal e show de música controlados pela Internet: Meu projeto de caixa de natal consiste em um show de luzes e música de Natal controlado pela Internet. Uma canção de Natal pode ser solicitada on-line, a qual é colocada em uma fila e reproduzida na ordem em que foi solicitada. A música é transmitida em um FM stat
Luzes de Natal para música usando Arduino: 9 etapas (com imagens)
Luzes de Natal com música usando Arduino: minha esposa e eu queríamos criar nosso próprio show de luzes com música nas últimas temporadas. Inspirados pelos dois Instructables abaixo, decidimos finalmente começar este ano e decorar nosso RV. Queríamos um cont