ciao,
sto scrivendo un programma per creare un taglia pasta automatico.
é il mio primo programma e sono un po in difficoltà.
Riassumo in breve quello che vorrei fare e il mio problema:
Comando il mio stepper motor per fargli fare una rotazione di 360 gradi (la velocità di rotazione è sempre la stessa, quella massima supportata dal mio motore) e poi farlo fermare per un delay di tempo che modifico grazie ad un potenziometro da 10 K ohm.Ho inserito valori per fare in modo di avere 100 differenti tempi di attesa tra una rotazione e l' altra del motore e tutto funzionava correttamente.
Ora ho cercato di aumentare i tempi di attesa tra una rotazione e l' altra da 100 a 500 (per avere più possibilità di regolazione) ma dopo la compilazione del programma mi appare l' errore perché ho superato la memoria disponibile. Potreste darmi consigli su come ridurre l' uso della memoria? proprio no saprei come fare... grazie per il supporto e buon pomeriggio!
di seguito parte del mio programma (si ripete per tutte le 500 volte dei vari tempi di attesa)
const int stepPin = 5;
const int dirPin = 2;
const int enPin = 8;
int potPin = 0;
void setup() {
Serial.begin(9600);
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
pinMode(enPin,OUTPUT);
digitalWrite(enPin,LOW);
}
void loop() {
int potPin = analogRead(A0);
Serial.println (potPin);
delay (50);
if (potPin>=1000){
delay (5000);
digitalWrite(dirPin,HIGH);
for(int x = 0; x < 200; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(520);
digitalWrite(stepPin,LOW);
delayMicroseconds(520);
}}else if ((potPin<1000) && (potPin>998)) {
delay (4550);
digitalWrite(dirPin,HIGH);
for(int x = 0; x < 200; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(520);
digitalWrite(stepPin,LOW);
delayMicroseconds(520);
}}else if ((potPin<=998) && (potPin>996)) {
delay (4450);
digitalWrite(dirPin,HIGH);
for(int x = 0; x < 200; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(520);
digitalWrite(stepPin,LOW);
delayMicroseconds(520);
}}else if ((potPin<=996) && (potPin>994)) {
delay (4350);
digitalWrite(dirPin,HIGH);
for(int x = 0; x < 200; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(520);
digitalWrite(stepPin,LOW);
delayMicroseconds(520);
}}else if ((potPin<=994) && (potPin>992)) {
delay (4250);
digitalWrite(dirPin,HIGH);
for(int x = 0; x < 200; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(520);
digitalWrite(stepPin,LOW);
delayMicroseconds(520);
}}else if ((potPin<=992) && (potPin>990)) {
delay (4150);
digitalWrite(dirPin,HIGH);
for(int x = 0; x < 200; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(520);
digitalWrite(stepPin,LOW);
delayMicroseconds(520);
}}else if ((potPin<=990) && (potPin>988)) {
delay (4050);
digitalWrite(dirPin,HIGH);
for(int x = 0; x < 200; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(520);
digitalWrite(stepPin,LOW);
delayMicroseconds(520);
}}else if ((potPin<=988) && (potPin>986)) {
delay (3950);
digitalWrite(dirPin,HIGH); //
for(int x = 0; x < 200; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(520);
digitalWrite(stepPin,LOW);
delayMicroseconds(520);
}}else if ((potPin<=986) && (potPin>984)) {
delay (3850);