Håller ju på och bygger knäskrapare till min MC-kontroll https://elektronikforumet.com/forum/vie ... 5&start=30.
De funkar fint, men problemet är att jag hatar sladdar. Denna kontroll har redan alldeles för många!
Så, jag skaffade mig ett par attiny85 och tänkte skicka över signalen från arduino nano'n till attiny'sen via 433MHz.
Jag får det att funka hjälpligt att tända dioder med, men går bet när det kommer till att driva motorerna.
Ett av problemen är att jag för tillfället inte har några NPN-transistorer utan bara PNP och jag går bet med att styra dem från attiny'n.
De drivs av ett 3xAA-pack per knä.
Men, jag har även trassel med min kod (som jag gissat mig till med hjälp av arduinoforumet). Det känns som att den inte blir särskilt stabil. Om mottagaren läser av precis när sändaren skickar så blir det ju bra, men efter en stund hamnar de i ofas liksom. Jag förstår ju att det säkert finns en bra funktion för detta, men verkar inte kunna hitta de rätta sökorden.
Koden jag har idag ser ut som följande:
Sändare: (denna är bara för test, har en annan .ino som jag skall trycka in det i sedan)
Kod: Markera allt
#include <SoftwareSerial.h>
SoftwareSerial mySerial(11, 10); // RX, TX
const int trigger1 = 3; // button1 pin
const int trigger2 = 4; // button2 pin
const int on1 = 1; // value1 on
const int on2 = 2; // value2 on
const int off = 0; // Off, well off..
int triggerstate1 = 0; // button1 status variable
int triggerstate2 = 0; // button2 status variable
void setup() {
// open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
// set data rate for softserial
mySerial.begin(2400);
// set pin settings
pinMode(trigger1, INPUT_PULLUP);
pinMode(trigger2, INPUT_PULLUP);
}
void loop() {
// read trigger value
triggerstate1 = digitalRead(trigger1);
triggerstate2 = digitalRead(trigger2);
// check if trigger is pressed
if (triggerstate1 == LOW) {
// send serial data "1"
mySerial.write(on1);
Serial.print("T1:");
Serial.println(triggerstate1);
} else if (triggerstate2 == LOW){
// send serial data "2"
mySerial.write(on2);
Serial.print("T2:");
Serial.println(triggerstate2);
} else {
// send serial data "0"
mySerial.write(off);
}
//delay(1);
}
Mottagaren däremot:
Kod: Markera allt
#include <SoftwareSerial.h>
// define serial pins
SoftwareSerial mySerial(1,2); //(RX,TX)
const int pin0 = 0;
void setup()
{
//define motor pin as output
pinMode(pin0, OUTPUT);
//initiate softserial
mySerial.begin(2400);
}
void loop()
{ if(mySerial.available() > 0)
{
if (mySerial.read() == 1) {
// turn motor on
digitalWrite(pin0,HIGH);
} else {
//turn motor off
digitalWrite(pin0,LOW);
}
}
delay(1);
}