Beste allemaal,
Ik ben nieuw hier dus even voorstellen;
De naam is Martien ik woon in Noord Brabant
Ik wil met de Espressif ESP32 DevKitC (ESP32 Core Board V2)
de LED RGB Strip - Addressable, 1m (APA102) aansturen.
De “opzet” van de code wordt het zelfde als in deze video
Dus ook met Arrays en met een “eigen” ESP32 webpagina,om de leds via Wifi met een laptop of Smartphone te bedienen.
De code staat (vlgs mij) niet meer op de bewuste website daarom zet ik h'm er even bij.
#include "NeoPixelBus.h" // Library to control Pixel Stick
#include <WiFi.h> //"ESP8266WiFi.h" // WiFi Library
#define PixelCount 8 // Number of leds on stick
#define PixelPin 2 // NodeMCU pin 2 (RX) connected to Digital In of Pixel Stick
const char* ssid = "xxxxxxx"; // Name of WiFi Network
const char* password = "xxxxxxx"; // Password of WiFi Network
int firstrun = 0; // Check if system was just powered on
int buttonpressed = 5; // To hold which button was pressed on Web Page
// Initialize Library
//NeoPixelBus<NeoGrbFeature, Neo800KbpsMethod> strip(PixelCount, PixelPin);
// Define Arrays for colors
long switchled00[] =
{
0x0E5219, 0x52160E, 0x0E5219, 0x52160E,0x0E5219,0x52160E,0x0E5219,0x52160E
};
long switchled01[] =
{
0x19257B, 0x7B7A19, 0x19257B, 0x7B7A19, 0x19257B, 0x7B7A19, 0x19257B, 0x7B7A19
};
WiFiServer server(80); // Define Web Server Port
void setup() {
Serial.begin(115200);
delay(10);
//strip.Begin(); // Init of Pixel Stick
//strip.Show(); // Clears any lit up Leds
// Connect to WiFi network
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
// Wait until connected to WiFi
while (WiFi.status() != WL_CONNECTED) {
delay(250);
Serial.print(".");
}
// Confirmation that WiFi is connected
Serial.println("");
Serial.println("WiFi connected");
// Start the Web Server
server.begin();
Serial.println("Web Server Started");
// Display IP address
Serial.print("You can connect to the Server here: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println();
Serial.println();
}
void loop() {
// Check if someone is connected
WiFiClient client = server.available();
if (!client) {
return;
}
// Read which button was pressed on the Web Page
String request = client.readStringUntil('\r');
// Light Up leds based on the button pressed
if (request.indexOf("/REDGREEN=1") != -1) {
for (int led = 0; led < 8; led++) {
//strip.SetPixelColor(led, HtmlColor(switchled00[led]));
}
//strip.Show();
buttonpressed = LOW;
firstrun=1;
}
if (request.indexOf("/BLUEYELLOW=1") != -1) {
for (int led = 0; led < 8; led++) {
//strip.SetPixelColor(led, HtmlColor(switchled01[led]));
}
//strip.Show();
buttonpressed = HIGH;
firstrun=1;
}
// Create Web Page
client.println("HTTP/1.1 200 OK"); // HTML Header
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>"); // Start of HTML
client.println("<style>");
client.println("body {background-color: #ACAEAD;}"); // Set Background Color
client.println("</style>");
if (firstrun == 0) {
client.print("Please Click a Button ");
}
else {
client.print("Last Button Pressed was ");
}
if(buttonpressed == LOW) {
client.print("Red & Green");
}
if (buttonpressed == HIGH){
client.print("Blue & Yellow");
}
client.println("
");
client.println("<a href=\"/REDGREEN=1\"\"><button>Red & Green </button></a>");
client.println("<a href=\"/BLUEYELLOW=1\"\"><button>Blue & Yellow </button></a>
");
client.println("</html>");
delay(10);
Het “grote” verschil is dat ik een andere strip en een ander board wil gebruiken. De ESP32 heeft nl 4 aansluitdraden.
Het voordeel daarvan is dat je iedere led apart aan kunt sturen.
Verder wil ik de website op de ESP32 direct benaderen dus niet via een externe bestaande router.
Als ik me niet vergis kan dat o.a met deze regel “WiFi.softAP (ssid , password)”.
In deze video staat een voorbeeld hoe je de APA 102 met de ESP32 aanstuurt
De code staat hier:
Het wisselend kleurpatroon en het knipperen heb ik niet nodig,de kleuren moeten dus constant zijn.
Daarom denk ik dat de code van line 1 t/m 79 wel op een of andere manier bruikbaar is.
De vraag is hoe kun je “beide” samenbrengen tot een werkend geheel.
Hopelijk kan iemand mij hier mee verder helpen.
Reacties zijn meer dan welkom !
Martien