Modelo arquitetônico de uma parada de ônibus com pára-sol automático V2
Componentes e suprimentos
| | × | 1 | |
| | × | 1 | |
| | × | 2 | |
| | × | 1 | |
| LED de alto brilho, branco | | × | 6 | |
| | × | 3 | |
| | × | 1 | |
| | × | 27 | |
| | × | 2 | |
| | × | 2 | |
| Bateria de 9 V (genérica) | | × | 1 | |
| | × | 1 | |
Sobre este projeto
Esta é uma atualização do projeto anterior (V 1.0)
As principais mudanças da V1.0 são:
- O tamanho do modelo arquitetônico. Tem um tamanho de 1,5 m x 1 m
- O peso do guarda-sol, é por isso que mudamos o micro servo SG99 para o MG995
- Adicionamos uma fonte externa de energia para que o MG995 pudesse funcionar
- Tentamos dois mecanismos diferentes para expandir / contrair o guarda-sol. O que foi descartado é mostrado no segundo vídeo. O que usamos no final é mostrado no terceiro. vídeo.
- Modifique o esboço para usar a biblioteca VarSpeedServo
- Corrigido um pequeno erro lógico em um dos estados do guarda-sol (graças a Gurneet1928)
Você pode encontrar a V1.0 no seguinte link:Modelo Versão 1.0
OS VÍDEOS:
Fazendo o circuito
Confecção do modelo arquitetônico
Código
O código C / C ++
#include VarSpeedServo servo; int orientalLight =0; int westernLight =0; int rainSensed =0; int sunshadePosition =0; int rainThreshold =512; int sunshadeExpanded =120; int sunshadeContracted =60; int ambientLighting =0; int turnOnLightsOn =150; int ledIntensity =0; int ledPower =0; int servoSpeed =20; bool debugging =false; // Defina como TRUE para habilitar a depuração para Serial Consolevoid setup () {pinMode (A4, OUTPUT); // Iluminação interna da parada pinMode (A5, OUTPUT); // Poste pinMode (A1, INPUT); // luz ocidental pinMode (A2, INPUT); // Luz oriental pinMode (A3, INPUT); // Sensor de chuva analógico pinMode (2, INPUT); // Sensor de chuva digital servo.attach (A0); // Servo servo.write (sunshadeContracted, servoSpeed, true); if (depuração) {Serial.begin (9600); Serial.println ("*** DEBUGGING STARTED ***"); Serial.println ("-------------------------"); }} void oya_mydebug (String text, int value =NULL) {// Eu adicionei 'oya_' como uma forma de evitar uma falha com qualquer função de depuração // possível que uma biblioteca externa possa ter. Oya é uma abreviatura do nome // da minha empresa OfficeYA if (debugging) {Serial.print (text); if (valor) {Serial.print ("="); Serial.println (valor); } else {Serial.println (""); }}} void expand_collapse (int orientalLight, int westernLight) {if (orientalLight <=westernLight) {// É o amanhecer oya_mydebug ("É o amanhecer"); if (sunshadePosition! =sunshadeExpanded) {servo.write (sunshadeExpanded, servoSpeed, true); oya_mydebug ("Guarda-sol expandido"); }} if (orientalLight> westernLight) {// Está baixo oya_mydebug ("Sol está caindo"); if (sunshadePosition! =sunshadeContracted) {servo.write (sunshadeContracted, servoSpeed, true); oya_mydebug ("Guarda-sol contratado"); }}} void loop () {// Obter os valores do sensor EasternLight =analogRead (A2); WesternLight =analogRead (A1); rainSensed =analogRead (A3); sunshadePosition =servo.read (); ambientLighting =((orientalLight + westernLight) / 2); // Média do brilho do leste e oeste oya_mydebug ("EasternLight", EasternLight); oya_mydebug ("westernLight", westernLight); oya_mydebug ("rainSensed", rainSensed); oya_mydebug ("sunshadePosition", sunshadePosition); oya_mydebug ("ambientLighting", ambientLighting); // Descobre se está chovendo? if (rainSensed
Esquemas