Bom dia! Alguem poderia me ajudar? estou fazendo um projeto com stepper motor e n consegui colocar uma tela oled junto com o script de rotação do motor. então peguei um nano somente para exibição de informações, mas não consigo enviar as informações do pino A1 do uno que tem o motor para o pino A0 do nano que tem a tela...seguem os códigos:
Atualmente exibe valores aleatórios sem o fio conectado nem nada...e com o fio n mostra alteração, fica oscilando entre esses aleatórios.
Motor (em negrito o que eu alterei para tentar mandar o sinal para o outro)
// Include the Arduino Stepper Library
#include <Stepper.h>
// Define Constants
// Number of steps per output rotation
const int STEPS_PER_REV = 200;
const int SPEED_CONTROL = A0;
**const int SPEED_SEND = A1;**
// The pins used are 1,2,3,4
// Connected to L298N Motor Driver In1, In2, In3, In4
// Pins entered in sequence 1-2-3-4 for proper step sequencing
Stepper stepper_NEMA17(STEPS_PER_REV, 1, 2, 3, 4);
void setup() {
// nothing to do inside the void setup
//pinMode(SPEED_SEND, OUTPUT);
}
void loop() {
// read the sensor value:
int sensorReading = analogRead(SPEED_CONTROL);
// map it to a range from 0 to 100:
int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
**analogWrite(SPEED_SEND,motorSpeed);**
// set the motor speed:
if (motorSpeed > 0) {
stepper_NEMA17.setSpeed(motorSpeed);
// step 1/100 of a revolution:
stepper_NEMA17.step(STEPS_PER_REV / 100);
}
}
Tela
// Include the Arduino Stepper Library
//#include <Stepper.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
//const int STEPS_PER_REV = 200;
const int SPEED_CONTROL = A0;
//#define CLOCK_PIN 8
//#define DATA_PIN 9
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// Define Constants
void setup() {
Serial.begin(115200);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 3);
// Display static text
display.println("Enroladora 3D Factory");
display.display();
delay(2000);
}
void loop() {
//controle do motor
// read the sensor value:
//int sensorReading = analogRead(SPEED_CONTROL);
// map it to a range from 0 to 100:
//int motorSpeed = map(sensorReading, 0, 1023, 0, 100);
**int motorSpeed = analogRead(SPEED_CONTROL);**
// set the motor speed:
if (motorSpeed > 0) {
//stepper_NEMA17.setSpeed(motorSpeed);
// step 1/100 of a revolution:
//stepper_NEMA17.step(STEPS_PER_REV / 100);
//mostrar porcentagem do motor
display.clearDisplay();
display.setTextColor(SSD1306_WHITE);
//display.drawLine(0,47,0,62, SSD1306_WHITE);
//display.setCursor(0, 10);
//String SpeedPercent = ((String)"Velocidade : " + motorSpeed + (String)" %");
//display.drawRect(0, 0, 128, 16, WHITE); //amarelo
display.drawRect(12, 0, 104, 16, WHITE); //amarelo
//display.drawRect(0, 0, 128, 32, WHITE);
display.drawRect(0, 17, 128, 45, WHITE); //contorno tela toda
//display.drawRect(12, 2, 104, 13, WHITE);
display.fillRect((128/2) - (motorSpeed/2), 2, motorSpeed, 12, WHITE);
//display.fillRect(14, 10, motorSpeed, 10, WHITE);
//display.setTextSize(1); // Normal 1:1 pixel scale
//display.setTextColor(SSD1306_WHITE); // Draw white text
//display.setCursor(102,20);
//display.setCursor((128/2) - 22, 30);
//display.setCursor(10, 45);
//display.println((String)"DIAMETRO");
display.setTextSize(4);
display.setCursor(10 , 25);
display.println((String)"0.20");
display.setTextSize(1.5);
display.setCursor(105 , 48);
display.println((String)"mm");
display.setTextSize(1.5);
display.setTextColor(BLACK);
//const int TXT_MIDDLE = 128/2 - strlen("Velocidade : " + motorSpeed + (String)" %")/2;
display.setCursor(0 , 10);
//display.println((String)"MOTOR : ");
if (motorSpeed > 9) {
display.setCursor((128/2) - 8, 4);
display.println(motorSpeed + (String)"%");
//stepper_NEMA17.setSpeed(motorSpeed);
// step 1/100 of a revolution:
//stepper_NEMA17.step(STEPS_PER_REV / 100);
} else if (motorSpeed == 100) {
display.setCursor((128/2) - 10, 4);
display.println(motorSpeed + (String)"%");
//stepper_NEMA17.setSpeed(motorSpeed);
// step 1/100 of a revolution:
//stepper_NEMA17.step(STEPS_PER_REV / 100);
} else {
display.setCursor((128/2) - 4, 4);
display.println(motorSpeed + (String)"%");
//stepper_NEMA17.setSpeed(motorSpeed);
// step 1/100 of a revolution:
//stepper_NEMA17.step(STEPS_PER_REV / 100);
}
display.display();
//buzzer
digitalWrite(11, HIGH);
delay(1000);
digitalWrite(11, LOW);
}
}
Desde já, obrigado!