hi i have l293D UNO shield and i want to use blynk to control a stepper motor but i dont want to connect UNO to blynk directly i want to send vertical slider datas to nodemcu and send these datas with i2c connections to UNO
my codes:
nodemcu:
#include <Wire.h>
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = "";
char ssid[] = "";
char pass[] = "";
void setup() {
Blynk.begin(auth, ssid, pass);
Serial.begin(9600); /* открываем серийный порт для дебаггинга */
Wire.begin(D1, D2); /* задаем i2c мост через контакты SDA=D1 и SCL=D2 на NodeMCU */
}
BLYNK_WRITE(V1)
{
int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable
Wire.beginTransmission(8); /* Начинаем передачу на адресе 8 */
Wire.write(pinValue); /* Отправляем "hello Arduino" */
//Wire.endTransmission(); /* прекращаем передачу */
Serial.println(pinValue);
}
void loop() {
Blynk.run();
}
UNO
#include <Wire.h>
#include <AccelStepper.h>
#include <AFMotor.h>
AF_Stepper m1(200,1);
void forward(){
m1.onestep(FORWARD,SINGLE);
}
void backward(){
m1.onestep(BACKWARD,SINGLE);
}
void setup() {
m1.setSpeed(100);
Wire.begin(8); /* задаем на шине i2c 8 адрес */
Wire.onReceive(receiveEvent); /* регистрируем полученное событие */
//Wire.onRequest(requestEvent); /* регистрируем запрошенное событие */
Serial.begin(9600); /* открываем серийный порт для дебаггинга */
}
void loop() {
delay(100);
}
// Функция для извлечения любых принимаемых данных от мастера на шину
void receiveEvent(int howMany) {
while (0 <Wire.available()) {
char c = parseInt(Wire.read()); /* получаем байт как символ*/
Serial.print(c); /* выводим символ в серийный порт */
m1.step(c,FORWARD,SINGLE);
}
//Serial.println(); /* переходим на новую строку */
}
sorry for bad english