Hi forum leden. is al een tijdje geleden maar ben er nog ![]()
na het een en ander te proberen de basis toch een beetje onder knie gekregen en heb mijn werkende sketch. nu wil ik deze sketch vermenigvuldigen en op een klein afstand van 3 meter zetten. de afstand is geen probleem maar zal dus niet genoeg poorten hebben. ik dacht hiervoor een pcf8575 I/O expander te gebruiken dat via I2c kan communiceren en dat wil me maar niet lukken. ook werken mijn motoren met puls commanden ( dus aan en uit in korte tijden). Weet ook niet of deze met in en output tegelijk te gebruiken is. of moet ik er specifiek een pcf voor de outputs en 1 voor de inputs gebruiken?
kan er iemand mij hierbij helpen ?
#include <math.h>
const int motor1R = 12;
const int motor1L = 11;
const int motor2R = 10;
const int motor2L = 9;
const int motor3R = 8;
const int motor3L = 7;
const int pomp = 4; //waterpomp
const int drukknoppin = 2;
const int gewensttemperatuur = 45; //temperatur aan passen!!!!
const int laagdrempel = 30;
const int wachttijd = 50; // wachttijd bij aan uit schakelen van spoelen!!
int temperatuur;
int temperatuurpin = A0;
int drukknop;
int A=0;
int AA=0;
int BB=0;
int CC=0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(drukknoppin, INPUT_PULLUP);
pinMode(motor1R, OUTPUT);
pinMode(motor1L,OUTPUT);
pinMode(motor2R,OUTPUT);
pinMode(motor2L, OUTPUT);
pinMode(motor3R, OUTPUT);
pinMode(motor3L, OUTPUT);
pinMode(pomp, OUTPUT);
}
double Termistor(int analogOkuma){
double temperatuur;
temperatuur = log(((10240000 / analogOkuma) - 9850));
temperatuur = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * temperatuur * temperatuur)) * temperatuur);
temperatuur = temperatuur - 273.15;
return temperatuur;
}
void loop() {
// put your main code here, to run repeatedly:
drukknop = digitalRead(drukknoppin);
int deger = analogRead(A0);
double temperatuur = Termistor(deger);
Serial.print("knop: ");
Serial.print(drukknop);
Serial.println();
Serial.print("tempertauur: ");
Serial.print(temperatuur);
Serial.print("°C");
Serial.println();
Serial.print("A=");
Serial.print(A);
Serial.println();
Serial.print("AA=");
Serial.print(AA);
Serial.println();
Serial.print("BB=");
Serial.print(BB);
Serial.println();
Serial.print("CC=");
Serial.print(CC);
Serial.println();
delay(500);
if (drukknop == 0) {
A++;}
if (A == 1 && temperatuur <= gewensttemperatuur && AA == 0) {
digitalWrite(motor1R, LOW);
digitalWrite(motor1L,HIGH);
digitalWrite(motor2L, LOW);
digitalWrite(motor2R,HIGH);
digitalWrite(motor3R, LOW);
digitalWrite(motor3L,HIGH);
delay(wachttijd);
digitalWrite(pomp, HIGH);
digitalWrite(motor1L,LOW);
digitalWrite(motor2R,LOW);
digitalWrite(motor3L,LOW);
AA++; }
if (A == 1 && AA == 1){ BB = 0;}
if (A == 1 && temperatuur>=gewensttemperatuur && BB == 0) {
digitalWrite( pomp, LOW);
digitalWrite( motor3L, LOW);
digitalWrite( motor3R, HIGH);
digitalWrite( motor1L, LOW);
digitalWrite( motor1R, HIGH);
digitalWrite( motor2R, LOW);
digitalWrite( motor2L, HIGH);
delay(wachttijd);
digitalWrite( motor3R, LOW);
digitalWrite( motor1R, LOW);
digitalWrite( motor2L, LOW);
BB++;
}
if (A == 1 && BB == 1){ AA = 0; CC = 0; A++;}
if (drukknop == 1 && A >= 2){
A=0; AA=0; BB=0; CC=0;
digitalWrite( pomp, LOW);
digitalWrite( motor3L, LOW);
digitalWrite( motor3R, HIGH);
digitalWrite( motor1L, LOW);
digitalWrite( motor1R, HIGH);
digitalWrite( motor2R, LOW);
digitalWrite( motor2L, HIGH);
delay(wachttijd);
digitalWrite( motor3R, LOW);
digitalWrite( motor1R, LOW);
digitalWrite(motor2L, LOW);
}
if (CC == 0 && temperatuur <= laagdrempel ) {
digitalWrite(motor1R, LOW);
digitalWrite(motor1L,HIGH);
delay(wachttijd);
digitalWrite(motor1R, LOW);
digitalWrite(motor1L,LOW);
CC++;
}
}
de analoge ingang word dus niet vermenigvuldigd. die word later omgebouwd naar een digitale signaal.
mvg,
w-besp