Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/victor-lis/wifi_e_led_rgb
Controlando as cores de um Led RGB via Wifi usando um Esp32 e C++!
https://github.com/victor-lis/wifi_e_led_rgb
esp32 led robotics wifi
Last synced: about 1 month ago
JSON representation
Controlando as cores de um Led RGB via Wifi usando um Esp32 e C++!
- Host: GitHub
- URL: https://github.com/victor-lis/wifi_e_led_rgb
- Owner: Victor-Lis
- Created: 2023-11-18T20:46:14.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-18T23:46:07.000Z (about 1 year ago)
- Last Synced: 2024-10-05T12:41:05.306Z (3 months ago)
- Topics: esp32, led, robotics, wifi
- Language: C++
- Homepage:
- Size: 34.2 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Alterando cores do Led RGB via Wifi
Nesse projeto tive a experiência de pela primeira vez utilizar um Led RGB e também foi minha primeira vez de fato lendo parâmetros http usando C++.
## Desafios
Acredito que meus principais desafios nesse projeto foram:
- Rodar o Esp32 como um servidor.
- Primeira vez usando um Led RGB
- Receber cores rgb via método get na url.
## AprendizadosPor final aprendi algumas coisas interessantes como:
### Criando uma server Wifi com o Esp32```c++
#include
#include
#include
#include// Set these to your desired credentials.
const char *ssid = "esp32_server";
const char *password = "esp32@server";WiFiServer server(80);
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println("Configuring access point...");if (!WiFi.softAP(ssid, password)) {
log_e("Soft AP creation failed.");
while(1);
}
IPAddress myIP = WiFi.softAPIP();
Serial.println(myIP);
server.begin();Serial.println("Server started");
}
```## Convertendo tipagem das variáveis
### Int para String
Nesse caso eu passo uma variável do tipo Int como parâmetro entre a String(Int).
```c++
String red = String(currentLine[33]) + String(currentLine[34]) + String(currentLine[35]);
```### String para Int
Nesse caso eu pego a variável String "red", declarada no exemplo acima e simplesmente adiciono .toInt(), transformando-a em Int.
```c++
analogWrite(PIN_RED, red.toInt());
```## Recebendo valores da web
```c++
#define PIN_RED 23 // GPIO23
#define PIN_GREEN 22 // GPIO22
#define PIN_BLUE 21 // GPIO21void setup() {
pinMode(PIN_RED, OUTPUT); // Inicializando o pino vermelho
pinMode(PIN_GREEN, OUTPUT); // Inicializando o pino verde
pinMode(PIN_BLUE, OUTPUT); // Inicializando o pino blue
}void loop() {
...
if(...){
analogWrite(PIN_RED, red.toInt());
analogWrite(PIN_GREEN, green.toInt());
analogWrite(PIN_BLUE, blue.toInt());
}
...
}
```## Recebendo valores via GET
No trecho abaixo pego os indices de cada parâmetro da url (sendo do tipo String) e os converto para int.
Verfiquei se o método continha "Referer", se tivesse, seria a minha url. Em seguida verifiquei se a "currentLine" atual tinha exatamente 44 caractéres. Para ficar mais fácil de entender, a url que ele vai ler é parecida com a seguinte url:
```c++
http://192.168.4.1/?rgb=200100150
(Exatamente 44 caractéres)Indices Vermelhos: [33, 34, 35]
Indices Verdes: [36, 37, 38]
Indices Azuis: [39, 40, 41]Resultado (de acordo com o exemplo):
Vermelho: 200
Verde: 100
Azul: 150```
```c++
void loop(){
if ((currentLine.indexOf("Referer")+1) && currentLine.length() == 42) {
Serial.println(currentLine);
String red = String(currentLine[33]) + String(currentLine[34]) + String(currentLine[35]);
String green = String(currentLine[36]) + String(currentLine[37]) + String(currentLine[38]);String blue= String(currentLine[39]) + String(currentLine[40]) + String(currentLine[41]);
analogWrite(PIN_RED, red.toInt());
analogWrite(PIN_GREEN, green.toInt());
analogWrite(PIN_BLUE, blue.toInt());
}
}
```
# Resultado[Ver vídeo do projeto funcionando!](https://youtube.com/shorts/0fI4GBiOdVI?feature=share)
## Autores e Pessoas que ensinei durante o Projeto.
- [@Iago-Rodrigues](https://github.com/iagoRRocha)
- [@Karlos Eduardo](https://github.com/ImpressoraTelepatica)
- [@Miguel Rosillo](https://github.com/MiguelRED1209)
- [@Pedro Henrique](https://github.com/PedroHenriqueMoraesSamsonas)
- [@Victor-Lis](https://github.com/Victor-Lis)