De Redder

Weer een stukje detaillering van de railing :), de houder voor het drijfanker.

full


Groet Halmar
 
Laatst bewerkt door een moderator:
Een paar kleine stapjes, de railing is in princiepe af, schoonmaken, vast zetten en spuiten voor de volgende keer.

Frame voor de dek kist, en een gelijde oog tegen de onderkant van de bovenrand

Bolder, aan de andere kant zit er natuurlijk ook een :)

Groet Halmar
 
De railing is inmiddels in de primer gespoten en met epoxy in het dek gelijmd. Zit er stevig op :). Ondertussen heb ik na best wat denkwerk en een tijdje programmeren een MultiSwitch gebouwd op basis van een Arduino. De eerste tests lijken goed te werken, dus kan na nog wat verder uitwerken een hoop van de verlichting of andere aan/uit functies bedienen.


Groet Halmar
 
Dit is op 40 MHz. In de zender zit overigens niets bijzonders. Werking is als volgt; als je een gewone stuurknuppel naar een uiterste beweegt ziet de arduino dit als een aan signaal, de volgende keer dat je de knuppel naar die plek brengt word hij weer uitgeschakeld. Doormiddel van een aantal weerstanden heb ik 11 (een is middenstand) posities gemaakt, waar je de knuppel als het ware heen kan brengen, maar elke positie heeft dus een schakelaartje gekregen. De arduino kan elke positie vervolgens vertalen naar schakel functie. (Hoop dat het idee duidelijk is). Omdat er in de zender en in de signaal overdracht niets anders is als bij een gewone stuurfunctie, heb ik goede hoop dat dit ook in een 2,4 GHz zender zou moeten werken. Heb zelf helaas geen zender om dit uit te testen, kan alleen het concept testen, gewoon een echte knuppel gebruiken op mijn vliegzender...

Groet Halmar
 
Dit is op 40 MHz. In de zender zit overigens niets bijzonders. Werking is als volgt; als je een gewone stuurknuppel naar een uiterste beweegt ziet de arduino dit als een aan signaal, de volgende keer dat je de knuppel naar die plek brengt word hij weer uitgeschakeld. Doormiddel van een aantal weerstanden heb ik 11 (een is middenstand) posities gemaakt, waar je de knuppel als het ware heen kan brengen, maar elke positie heeft dus een schakelaartje gekregen. De arduino kan elke positie vervolgens vertalen naar schakel functie. (Hoop dat het idee duidelijk is). Omdat er in de zender en in de signaal overdracht niets anders is als bij een gewone stuurfunctie, heb ik goede hoop dat dit ook in een 2,4 GHz zender zou moeten werken. Heb zelf helaas geen zender om dit uit te testen, kan alleen het concept testen, gewoon een echte knuppel gebruiken op mijn vliegzender...

Groet Halmar
Halmar, zit net je schakeling weer te lezen en dat principe ziet er goed uit.
Dit gaat zeker werken op 2.4ghz.
Ik heb nu de verlichting ook in de mast, maar had nu 2 blauwe knipperleds gebruikt.
Maar ik denk dat ik deze ook vervang door 3 smd leds in een blauw kapje, te samen met jouw flitslicht schakeling.
Zal deze week weer wat foto,s plaatsen.
 
Behalve dat ik hier een groot compliment wil, nee móet, geven voor dit schitterende model wil ik ook wel even kwijt dat dit misschien wel het langst lopende topic van dit forum is:bier:

Maar: wat langzaam komt is goed.
Dat blijkt maar weer eens.
 
Is zeker een lang lopend project. Eigenlijk teveel andere projecten en te weinig tijd, maar hij is ook te mooi om niet verder te gaan :).

Hier nog een plaatje van hoe de multiswitch geworden is;

En omdat er zo nu en dan mensen naar vragen hier de code (geen garantie);

Code:
/*
 * Use transmitter stick to togle a led on and of 
 * By Halmar Lakeman
 * 13-10-2015
 * Last update 28-12-2017
 */

int input;  // Input from transmitter

int ch1 ;  // Channels
int ch2 ;  // To store channel state
int ch3 ;  
int ch4 ;
int ch5 ;
int ch6 ;
int ch7 ;
int ch8 ;
int ch9 ;
int ch10 ;

int laststate1 = 0; // last position
int laststate2 = 0;
int laststate3 = 0;
int laststate4 = 0;
int laststate5 = 0;
int laststate6 = 0;
int laststate7 = 0;
int laststate8 = 0;
int laststate9 = 0;
int laststate10 = 0;

unsigned long lastdebouncetime1 = 0;// keep track of time
unsigned long lastdebouncetime2 = 0;
unsigned long lastdebouncetime3 = 0;
unsigned long lastdebouncetime4 = 0;
unsigned long lastdebouncetime5 = 0;
unsigned long lastdebouncetime6 = 0;
unsigned long lastdebouncetime7 = 0;
unsigned long lastdebouncetime8 = 0;
unsigned long lastdebouncetime9 = 0;
unsigned long lastdebouncetime10 = 0;

int debouncedelay = 500; //time for debouncen


void setup() {

  pinMode(2, INPUT);    // input, connected to reciever
 
  pinMode(3, OUTPUT);   // ch1
  pinMode(4, OUTPUT);   // ch2
  pinMode(5, OUTPUT);   // ch3
  pinMode(6, OUTPUT);   // ch4
  pinMode(7, OUTPUT);   // ch5
  pinMode(8, OUTPUT);   // ch6
  pinMode(9, OUTPUT);   // ch7
  pinMode(10, OUTPUT);  // ch8
  pinMode(11, OUTPUT);  // ch9
  pinMode(12, OUTPUT);  // ch10
  pinMode(13, OUTPUT);  // Just to switch of the led


}

void loop() {

  input = pulseIn(2, HIGH, 25000); // Read the pulse width of the signal

  // kanaal 1
  //values 860 & 951 are transmitter/configuration dependant. You will have to figure
  //out wat works for you. The same goes for all subsequent channels

  if ( input < 860 || input > 951 ) {              // make it a digital on/off signal
    ch1 = 0;
  } else if (input > 860 && input < 951) {
    ch1 = 1;
  }

  if((millis() - lastdebouncetime1) > debouncedelay)  // debouce time checken
  {
    if (ch1 == 1 && laststate1 == 0) {                // switch on
        digitalWrite(3, HIGH);
        laststate1 = 1;
        lastdebouncetime1 = millis();
       
      } else if (ch1 == 1 && laststate1 == 1){        // switch off
        digitalWrite(3, LOW);
        laststate1 = 0;
        lastdebouncetime1 = millis();
    }
  }

  // kanaal 2
 
    if ( input < 951 || input > 1059 ) {              // maak een digitaal aan/uit signaal
    ch2 = 0;
  } else if (input > 951 && input < 1059) {
    ch2 = 1;
  }

  if((millis() - lastdebouncetime2) > debouncedelay)  // debouce tijd checken
  {
    if (ch2 == 1 && laststate2 == 0) {                // aan zetten
        digitalWrite(4, HIGH);
        laststate2 = 1;
        lastdebouncetime2 = millis();
       
      } else if (ch2 == 1 && laststate2 == 1){        // uit zetten
        digitalWrite(4, LOW);
        laststate2 = 0;
        lastdebouncetime2 = millis();
    }
  }

  // kanaal 3

    if ( input < 1059 || input > 1200 ) {              // maak een digitaal aan/uit signaal
    ch3 = 0;
  } else if (input > 1059 && input < 1200) {
    ch3 = 1;
  }

  if((millis() - lastdebouncetime3) > debouncedelay)  // debouce tijd checken
  {
    if (ch3 == 1 && laststate3 == 0) {                // aan zetten
        digitalWrite(5, HIGH);
        laststate3 = 1;
        lastdebouncetime3 = millis();
       
      } else if (ch3 == 1 && laststate3 == 1){        // uit zetten
        digitalWrite(5, LOW);
        laststate3 = 0;
        lastdebouncetime3 = millis();
    }
  }

  //kanaal 4

    if ( input < 1200 || input > 1327 ) {              // maak een digitaal aan/uit signaal
    ch4 = 0;
  } else if (input > 1200 && input < 1327) {
    ch4 = 1;
  }

  if((millis() - lastdebouncetime4) > debouncedelay)  // debouce tijd checken
  {
    if (ch4 == 1 && laststate4 == 0) {                // aan zetten
        digitalWrite(6, HIGH);
        laststate4 = 1;
        lastdebouncetime4 = millis();
       
      } else if (ch4 == 1 && laststate4 == 1){        // uit zetten
        digitalWrite(6, LOW);
        laststate4 = 0;
        lastdebouncetime4 = millis();
    }
  }

  //kanaal 5

    if ( input < 1327 || input > 1452 ) {              // maak een digitaal aan/uit signaal
    ch5 = 0;
  } else if (input > 1327 && input < 1452) {
    ch5 = 1;
  }

  if((millis() - lastdebouncetime5) > debouncedelay)  // debouce tijd checken
  {
    if (ch5 == 1 && laststate5 == 0) {                // aan zetten
        digitalWrite(7, HIGH);
        laststate5 = 1;
        lastdebouncetime5 = millis();
       
      } else if (ch5 == 1 && laststate5 == 1){        // uit zetten
        digitalWrite(7, LOW);
        laststate5 = 0;
        lastdebouncetime5 = millis();
    }
  }

  // kanaal 6

    if ( input < 1573 || input > 1691 ) {              // maak een digitaal aan/uit signaal
    ch6 = 0;
  } else if (input > 1573 && input < 1691) {
    ch6 = 1;
  }

  if((millis() - lastdebouncetime6) > debouncedelay)  // debouce tijd checken
  {
    if (ch6 == 1 && laststate6 == 0) {                // aan zetten
        digitalWrite(8, HIGH);
        laststate6 = 1;
        lastdebouncetime6 = millis();
       
      } else if (ch6 == 1 && laststate6 == 1){        // uit zetten
        digitalWrite(8, LOW);
        laststate6 = 0;
        lastdebouncetime6 = millis();
    }
  }

  // kanaal 7

    if ( input < 1691 || input > 1818 ) {              // maak een digitaal aan/uit signaal
    ch7 = 0;
  } else if (input > 1691 && input < 1818) {
    ch7 = 1;
  }

  if((millis() - lastdebouncetime7) > debouncedelay)  // debouce tijd checken
  {
    if (ch7 == 1 && laststate7 == 0) {                // aan zetten
        digitalWrite(9, HIGH);
        laststate7 = 1;
        lastdebouncetime7 = millis();
       
      } else if (ch7 == 1 && laststate7 == 1){        // uit zetten
        digitalWrite(9, LOW);
        laststate7 = 0;
        lastdebouncetime7 = millis();
    }
  }

  // kanaal 8

    if ( input < 1818 || input > 1959 ) {              // maak een digitaal aan/uit signaal
    ch8 = 0;
  } else if (input > 1818 && input < 1959) {
    ch8 = 1;
  }

  if((millis() - lastdebouncetime8) > debouncedelay)  // debouce tijd checken
  {
    if (ch8 == 1 && laststate8 == 0) {                // aan zetten
        digitalWrite(10, HIGH);
        laststate8 = 1;
        lastdebouncetime8 = millis();
       
      } else if (ch8 == 1 && laststate8 == 1){        // uit zetten
        digitalWrite(10, LOW);
        laststate8 = 0;
        lastdebouncetime8 = millis();
    }
  }

  // kanaal 9

    if ( input < 1959 || input > 2068 ) {              // maak een digitaal aan/uit signaal
    ch9 = 0;
  } else if (input > 1959 && input < 2068) {
    ch9 = 1;
  }

  if((millis() - lastdebouncetime9) > debouncedelay)  // debouce tijd checken
  {
    if (ch9 == 1 && laststate9 == 0) {                // aan zetten
        digitalWrite(11, HIGH);
        laststate9 = 1;
        lastdebouncetime9 = millis();
       
      } else if (ch9 == 1 && laststate9 == 1){        // uit zetten
        digitalWrite(11, LOW);
        laststate9 = 0;
        lastdebouncetime9 = millis();
    }
  }

  //kanaal 10

    if ( input < 2068 || input > 2160 ) {              // maak een digitaal aan/uit signaal
    ch10 = 0;
  } else if (input > 2068 && input < 2160) {
    ch10 = 1;
  }

  if((millis() - lastdebouncetime10) > debouncedelay)  // debouce tijd checken
  {
    if (ch10 == 1 && laststate10 == 0) {                // aan zetten
        digitalWrite(12, HIGH);
        laststate10 = 1;
        lastdebouncetime10 = millis();
       
      } else if (ch10 == 1 && laststate10 == 1){        // uit zetten
        digitalWrite(12, LOW);
        laststate10 = 0;
        lastdebouncetime10 = millis();
    }
  }
}

Ik heb deze schets gebruikt om de waarden van mijn zender te bepalen:

Code:
/*
 * Read a servo signal on pin 2 and display in the serial monitor 
 * By Halmar Lakeman
 * 13-10-2015
 * Last update 28-12-2017
 */

int ch1;

void setup() {

  pinMode(2, INPUT);

  Serial.begin(9600);

}

void loop() {

  ch1 = pulseIn(2, HIGH, 25000);

  Serial.print("Pulse width   ");
  Serial.println(ch1);

  delay(500);

}

Succes! Halmar
 
Hoi Halmar,

Mooi project die multiswitch, lijkt mij leuk om na te bouwen. Ik begrijp de code maar vraag mij af wat je in de zender moet inbouwen.
Een aantal schakelaars en weerstanden begrijp ik, heb je daar ppk een schematje van? Ander vraagje: met een Flysky FS-i6S kun je met de Flifhtmode ook de pulslengte van een kanaal op tot 9 standen schakelen, zou dat ook werken?

Groeten
Geert
 
Back
Top