Stap 3: De schets
In de eenvoudigste vorm, moet de schets ontvangen informatie in getallen tussen 0 en 255. Dit nummer wordt dan gebruikt voor controle van de helderheid van de LED met behulp van de functie analogWrite(pin,value). Het getal tussen 0 en 255 via Bluetooth naar de Arduino van HC-06 Bluetooth module moet worden verzonden door de schuifregelaar op de Roboremo app.
Echter ontvangt de module gegevens gecodeerd in ASCII-vorm (selectievakje ASCII). Er zijn manieren om dit gecodeerde ASCII omzetten in geheel getal zo nodig door de schets.
Ik heb geprobeerd met behulp van het type gieten methode. Iedereen is zich bewust van dat type van een variabele worden aangegeven moet vóór de invoering van de schets. Als het type van een variabele moet worden gewijzigd tijdens de uitvoering van het programma het kan worden gedaan door gewoon te typen (int), of (byte) of een ander type nodig worden geconverteerd naar. Bijvoorbeeld,
int i; De variabele i wordt gedeclareerd als een geheel getal
vlotter f; De variabele f is gedeclareerd als een float
f = 3.6;
Ik = f (int); nu ik 3, is dat wil zeggen ik de geheelwaarde van de vlotter f
Dus, declareert u de variabele fadeness in de schets als byte en vervolgens tijdens de uitvoering in void loop gegoten op integer met behulp van de (int).
Deze methode heeft problemen. De smartphone krijgt gegevens serieel en een nummer 103 is ontvangt als aparte 1 en 0 en een andere 3. Dit zal de LED knipperen met helderheid 1 en wanneer de volgende beetje is ontvangen, zal zij 0 en de LED zal gloeien met helderheid 0 en vervolgens met helderheid 3 wanneer 3 wordt ontvangen. De methode van type-casting, vandaar ontbreekt.
Er is een andere methode om dit te implementeren, en het werkt "EUREKA!". Verklaren variabele die de helderheid van de LED (d.w.z. fadeAmount zoals gegeven in de schets) als tekenreeks regelt daartoe ten uitvoer worden gelegd. Uitvoering tijdens het lezen van de gegevens over de fadeAmount over de Bluetooth lezen, met behulp van de functie Serial.readString() . Het is een wijziging van Serial.read() functie, die de gegevens ontvangen via Bluetooth als tekenreeks leest. Nu, deze reeks te converteren naar geheel getal met de functie .toInt() . Het zet de tekenreeks ontvangen naar een nummer als 100 of 200 zonder spaties.
Mijn waarneming blijkt echter dat het is langzaam en kunnen er andere betere manieren om te maken het werk sneller.