Índice:
- Suprimentos
- Etapa 1: Como funciona …
- Etapa 2: Upload do código
- Etapa 3: Bibliotecas necessárias:
- Etapa 4: As conexões
- Etapa 5: dê um tapa tudo junto
- Etapa 6: Outras melhorias:
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
No ano passado, eu e meu pai fomos a uma loja recém-inaugurada de robótica / eletrônica muito perto de onde moramos. Quando entrei lá, estava cheio de eletrônicos, serovs, sensores, Raspberry pis e Arduinos. No dia seguinte, fomos à mesma loja e compramos muitos senors e 3 Arduinos no valor de cerca de 150 dólares. Assim que fui para casa, nenhum outro produto funcionou, exceto o Arduino Mega. Fomos enganados por cerca de 130 dólares, o que é muito.
Então, decidi criar um robô que pode testar cerca de 12 sensores e 2 motores (ainda funcionando no servo) e pode determinar se o produto está com defeito.
Vamos direto ao assunto!
Suprimentos
1. Arduino UNO
2. Tela de toque TFT de 2,4"
3. alguns fios de ligação
4. sensores e motores para que você possa testá-los (aqui eu usei - sensor de movimento, sensor de gás MQ6, sensor de som, potenciômetro e sensor de nível de água)
Etapa 1: Como funciona …
Eu programei um Arduino para criar uma IU interativa com um display TFT. Como sabemos, o display TFT tem apenas um pino livre, ou seja, o pino A5. (se você usar o UNO). Portanto, qualquer sensor que usa pinos analógicos para ler dados é compatível com esta configuração …
Na IU, você pode alterar a cor de fundo da área de trabalho e pode abrir o aplicativo que foi desenvolvido para o Arduino por mim para testar sensores.
Ao abrir o aplicativo, você pode ver 2 opções, INPUT e OUTPUT. então, se você clicar em Entrada, ele mostra 4 sensores (é compatível com 12, mas ainda estou para programá-lo, pois tenho exames se aproximando … sem tempo:(. Qualquer pessoa é livre para editar o código …)
E também pode verificar se o servo motor funciona de você conectá-lo no slot.
dar uma olhada:
Etapa 2: Upload do código
O código é um programa de 600 linhas que codifiquei meticulosamente em cerca de 50 horas. Ele tem alguns bugs, então, por favor, altere-o e envie para mim no meu e-mail ([email protected]).
Faça upload do código e conecte o escudo TFT ao Arduino. Eu recomendo que você brinque com a IU para entender melhor.
O código:
#incluir
#include #include #include #define LCD_CS A3 #define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4 #define BLACK 0x0000 #define BLUE 0x001F #define NAVY NAVY 0x000F #define LCD_RD A0 #define LCD_RESET A4 #define BLACK 0x0000 #define BLUE 0x001F #define NAVY 0 x 0 x 0 x 0 0 0 0 0x07 #define MAGENTA 0xF81F #define AMARELO 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define ROXO 0x780F #define OLIVE 0x7BE0 #define Seleção #define YP A1 #define XMYX_MY #define TSIN #define TSIN 7 #define XM A2X2X2X2X2X2X2X_define #define TSIN # 6define TSIN #define YM 7 #define TSIN # 6EFIN TSIN2 #define TSIN #define YM 7 #define TSIN. 160 #define TS_MAXX 160 #define TS_MAXY 970 TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); Adafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); #define BOXSIZE 40 #define PENRADIUS 3 #define MINPRESSURE 10 #define MAXPRESSURE 1000 int sound; estado char = 6; toque interno = 0; cor interna = PRETO; redirecionado interno = 0; int ota; void setup () {Serial.begin (9600); tft.reset (); tft.setFont (& FreeMonoBoldOblique12pt7b); tft.begin (0x9325); tft.setRotation (45); tft.setTextSize (0,5); tft.fillScreen (BRANCO); tft.setCursor (60, 160); tft.setTextColor (BLACK); tft.print ("Deslize para fazer login"); } void loop () {float sensorVoltage; float sensorValue; TSPoint p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); if (pz> MINPRESSURE && pz 240 && px 130 && py 240 && px 20 && py 240 && px 20 && py 160 && px 12 && py 240 && px 20 && py 240 && px 20 && py 40 && px 15 && py 150 && px 40 && py 150 && px 80 && py 150 && px 120 && py 150 && px 170 && py 90 && px 40 && py 90 && px 80 && py 90 && px 120 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 100 && px 20 && py 200 && px 100 && py 100 && px 20 && py 100 && px 20 && py 100 && px 20 && py <100) {toque = 26; }} if (touch == 1 && state == 6) {tft.setRotation (0); tft.fillScreen (color); som = 0; tft.fillRect (200, 180, 80, 140, BRANCO); tft.drawRect (201, 181, 81, 141, PRETO); tft.fillRect (80, 30, 100, 100, CYAN); tft.drawRect (81, 31, 101, 101, PRETO); tft.fillRect (10, 30, 50, 100, MARINHA); tft.drawRect (11, 31, 51, 101, PRETO); tft.fillRect (10, 180, 30, 120, ROXO); tft.drawRect (11, 181, 31, 121, PRETO); tft.fillRect (45, 180, 30, 120, AZUL); tft.drawRect (46, 181, 31, 121, PRETO); tft.fillRect (80, 180, 30, 120, CYAN); tft.drawRect (81, 181, 31, 121, PRETO); tft.fillRect (115, 180, 30, 120, VERDE); tft.drawRect (116, 181, 31, 121, PRETO); tft.fillRect (150, 180, 30, 120, AMARELO); tft.drawRect (151, 181, 31, 121, PRETO); tft.fillTriangle (210, 30, 210, 50, 220, 40, BRANCO); tft.fillRect (200, 35, 12, 12, BRANCO); tft.drawTriangle (210, 30, 210, 50, 220, 40, PRETO); tft.drawRect (200, 35, 12, 12, PRETO); tft.drawCircle (210, 40, 14, BRANCO); //tft.fillTriange(a1, b1, a2, b2, c1, c2, RED); tft.setRotation (45); tft.setCursor (200, 20); tft.print ("Configurações"); tft.fillRoundRect (45, 75, 75, 75, 4, BRANCO); tft.drawRoundRect (45, 75, 75, 75, 4, PRETO); tft.fillRect (75, 75, 15, 30, PRETO); tft.fillRect (75, 120, 15, 30, PRETO); tft.fillRect (90, 105, 30, 15, PRETO); tft.fillRect (45, 105, 30, 15, PRETO); estado = 7; toque = 0; ota = 0; } if (touch == 2) {tft.fillScreen (WHITE); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BRANCO); tft.fillRect (200, 35, 12, 12, BRANCO); tft.drawTriangle (210, 30, 210, 50, 220, 40, PRETO); tft.drawRect (200, 35, 12, 12, PRETO); tft.drawCircle (210, 40, 14, PRETO); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, PRETO); tft.drawLine (300, 30, 270, 30, PRETO); tft.setCursor (20, 200); tft.print ("personalização"); tft.setCursor (20, 170); tft.print ("sair"); tft.setCursor (20, 140); tft.print ("periféricos"); tft.setCursor (20, 110); tft.print ("Sobre"); toque = 1; estado = 2; } if (touch == 10 && state == 2) {tft.fillScreen (WHITE); tft.setCursor (10, 160); tft.setTextColor (BLACK); tft.print ("Criado e desenvolvido"); tft.setCursor (100, 190); tft.print ("por:"); tft.setCursor (60, 220); tft.print ("Um adolescente da Índia"); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BRANCO); tft.fillRect (200, 35, 12, 12, BRANCO); tft.drawTriangle (210, 30, 210, 50, 220, 40, PRETO); tft.drawRect (200, 35, 12, 12, PRETO); tft.drawCircle (210, 40, 14, PRETO); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, PRETO); tft.drawLine (300, 30, 270, 30, PRETO); estado = 6; } if (touch == 11 && state == 2) {tft.fillScreen (WHITE); tft.setCursor (60, 40); tft.print ("Escolha um"); tft.setCursor (40, 60); tft.print ("cor de fundo"); tft.fillRect (60, 180, 45, 45, VERMELHO); tft.fillRect (120, 180, 45, 45, AMARELO); tft.fillRect (180, 180, 45, 45, AZUL); tft.fillRect (240, 180, 45, 45, VERDE); tft.fillRect (60, 130, 45, 45, MAGENTA); tft.fillRect (120, 130, 45, 45, MARINHA); tft.fillRect (180, 130, 45, 45, LIGHTGREY); tft.fillRect (240, 130, 45, 45, CYAN); tft.fillRect (60, 80, 45, 45, BRANCO); tft.drawRect (60, 80, 45, 45, PRETO); tft.fillRect (120, 80, 45, 45, PRETO); tft.fillRect (180, 80, 45, 45, OLIVE); tft.fillRect (240, 80, 45, 45, ROXO); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BRANCO); tft.fillRect (200, 35, 12, 12, BRANCO); tft.drawTriangle (210, 30, 210, 50, 220, 40, PRETO); tft.drawRect (200, 35, 12, 12, PRETO); tft.drawCircle (210, 40, 14, PRETO); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, PRETO); tft.drawLine (300, 30, 270, 30, PRETO); estado = 6; if (redirecion == 1) {cor = BRANCO; } if (redir == 2) {color = BLACK; } if (redir == 3) {color = OLIVE; } if (redir == 4) {color = PURPLE; } if (redir == 5) {color = MAGENTA; } if (redir == 6) {color = NAVY; } if (redir == 7) {color = LIGHTGREY; } if (redirecion == 8) {cor = CIANO; } if (redir == 9) {color = RED; } if (redir == 10) {color = YELLOW; } if (redir == 11) {color = BLUE; } if (redir == 12) {color = GREEN; }} if (touch == 26) {ota = 1; tft.fillScreen (BRANCO); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, BRANCO); tft.fillRect (200, 35, 12, 12, BRANCO); tft.drawTriangle (210, 30, 210, 50, 220, 40, PRETO); tft.drawRect (200, 35, 12, 12, PRETO); tft.drawCircle (210, 40, 14, PRETO); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, PRETO); tft.drawLine (300, 30, 270, 30, PRETO); tft.setRotation (1); tft.setCursor (30, 80); tft.print ("Entrada"); tft.setCursor (30, 150); tft.print ("Saída"); tft.drawRect (25, 130, 90, 30, PRETO); tft.drawRect (25, 60, 90, 30, PRETO); if (p.x> 190 && p.x 30 && p.y <90) {tft.setCursor (150, 220); tft.print ("Nível de água"); tft.setCursor (150, 170); tft.print ("Nível de gás"); tft.setCursor (150, 120); tft.print ("Distância"); tft.setCursor (150, 70); tft.print ("Som"); toque = 1; estado = 2; }}} enquanto (som == 1) {tft.fillScreen (BRANCO); sensorValue = analogRead (A5); sensorVoltage = sensorValue; tft.setCursor (60, 160); tft.print (sensorVoltage); Serial.println ("Nível de som ="); Serial.println (sensorVoltage); atraso (1000); if (som == 0) {pausa; }}}}
Etapa 3: Bibliotecas necessárias:
- Adafruit_GFX.h
- Adafruit_TFTLCD.h
- TouchScreen.h
Links do Github para o mesmo:
github.com/adafruit/Adafruit-GFX-Library
github.com/adafruit/TFTLCD-Library
github.com/adafruit/Adafruit_TouchScreen
Etapa 4: As conexões
Você precisa de 6 fios de jumper. 3 homens e 3 mulheres. Solde-os diretamente na placa Arduino assim:
Etapa 5: dê um tapa tudo junto
Coloque os fios no arduino (consulte a imagem), use um pouco de pistola de cola, se necessário …
Em seguida, conecte o escudo TFT e teste seus sensores.
Obrigado por rolar até o fim. Certifique-se de votar em mim se você achou que este projeto foi único e útil
Feliz por fazer e cuidado com os golpistas eletrônicos?
Etapa 6: Outras melhorias:
- Mais compatibilidade de sensor
- O código do servo motor teve que ser concluído
- Outro aplicativo que pode fazer interface com módulos Bluetooth para que possamos controlar um robô alimentado por Bluetooth com ele.
- Correções de bugs
Recomendado:
Simon diz que jogo com Arduino: 5 etapas
Simon Says Game with Arduino: DIY Simon Says Game with Arduino, vou mostrar como fazer um Simon Says Game usando um Arduino, é muito simples, estou processando o Arduino Nano, Assine meu canal no YouTube
Não consigo acreditar que esta é outra fonte de alimentação USB !: 6 etapas
Não consigo acreditar que esta é outra fonte de alimentação USB !: Isso foi inspirado por alguns (leia: muitos) tutoriais sobre " Como carregar * com alimentação USB ", então inverti a lógica e estou publicando " Como conectar o carregador * às portas USB " .Como um " bônus adicional ", você pode usar o 2
Acho que o robô está olhando um pouco: 4 etapas
Acho que o robô está olhando um pouco .: Eu estava olhando para um dos instrutíveis. Eu vi onde eles estavam mudando a aparência do robô. Pensei em brincar com ele também. O site não tinha instruções sobre o que eles estavam fazendo. A pessoa disse que não podia
Assista secretamente ao que está acontecendo, não importa onde você esteja: 4 etapas
Assista secretamente ao que está acontecendo, não importa onde você esteja: Este instrutível mostrará como usar o aplicativo iphone / ipod touch "iCam" e seu computador para ver o que está acontecendo usando sua webcam onde você estiver. Este é meu primeiro instrutível, então, por favor, nenhuma crítica severa. Eu não me importo com qualquer feedback que você h
Todo mundo está fazendo um suporte para laptop, então por que não posso ?: 8 etapas (com fotos)
Todo mundo está fazendo um suporte para laptop, então por que não posso ?: Ou como transformei uma bandeja em um suporte para laptop. Não temos TV, mas gostamos de nos deitar sobre um cobertor e assistir a DVDs no laptop. Este suporte para laptop irá garantir boa estabilidade e fluxo de ar