• Vragen? Wacht niet langer op de antwoorden! Login of Registreer en plaats jouw vraag! Wij zullen je vragen z.s.m. beantwoorden.

DutchMicro's Arduino projecten.

DutchMicro

Prutser
Ik ben de laatste tijd echt verschrikkelijk verslaafd aan spelen met de Arduino en dat vind ik toch wel leuk om te delen.
Ik zal hier voortaan de projecten zetten ipv het RC gedeelte.

Ben vandaag begonnen aan een gemodde controler voor de arduino:

Even wat baantjes weggekrast:

935532_548380351914341_2105154589_n.jpg


Draden aangesloten:
( Max wat is had was 8 aderig dus moet nog eens op zoek naar een kabel met meer zodat ik alles kan aansluiten. )

544104_548380321914344_1365180352_n.jpg


Beetje plak er op zodat het niet onder de contacten komt:

1012023_548380325247677_1819613041_n.jpg


De 2e verdieping:

941481_548380358581007_1237938005_n.jpg


En het eindresultaat:

1392615_548380318581011_1284527319_n.jpg


Nog even een testprogrammatje geschreven:
( best lastig als je met een hand filmt)

 
Afgelopen weer de controller nog wat verder uitgebreid en vanavond het programma aangepast voor de extra controles.

1467412_552380081514368_1010424171_n.jpg


De analog knop heb ik nu zo ingesteld dat hij de kop horizontaal blijft.
Hardware en het basis programma is nu zo ver, kan het nu softwarematig zo gek gaan maken als ik zelf wil.

Ook werkt hij via PWM signalen die op alle servo's werken dus de besturing is ook niet beperkt tot dit robotje.

In actie:
 
Hier nog wat detail fotos:

1477958_568384799913896_1037712920_n.jpg


1452348_568384796580563_410517464_n.jpg


1515034_568384803247229_277348532_n.jpg


En de code:

Code:
// Bomb Game Mega.

// include the library code:
#include <LiquidCrystal.h>
#include <Servo.h> 

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
Servo myservoa;

//Inputs:
int redwire = 52;
int bluewire = 50;
int greenwire = 48;

//Outputs:
int redone = 53;
int greenone = 51;
int redtwo = 49;
int greentwo = 47;
int redthree = 45;
int greenthree = 43;
int relay = 8;



//Others:
int time = 30;
int redcut = 0;
int bluecut = 0;
int greencut = 0;
int two = 0;
int three = 0;
int militime = 0;

void setup()
{
  Serial.begin(9600);
  lcd.begin(16, 2);
  myservoa.attach(7); 
  pinMode(redwire, INPUT);
  pinMode(bluewire, INPUT);
  pinMode(greenwire, INPUT);
  pinMode(relay, OUTPUT);
  pinMode(redone, OUTPUT);
  pinMode(greenone, OUTPUT);
  pinMode(redtwo, OUTPUT);
  pinMode(greentwo, OUTPUT);
  pinMode(redthree, OUTPUT);
  pinMode(greenthree, OUTPUT);
  
  digitalWrite(redwire, HIGH);
  digitalWrite(bluewire, HIGH);
  digitalWrite(greenwire, HIGH);
  delay(100);
   myservoa.write(50);
   digitalWrite(relay, HIGH);
  delay(100);
  lcd.print(".....ARMING.....");
  delay(2000);
digitalWrite(redone, HIGH);
  digitalWrite(redtwo, HIGH);
  digitalWrite(redthree, HIGH);
  lcd.setCursor(0,0);
  lcd.print("                ");
  lcd.setCursor(0,0);
   lcd.print(".....ARMED!.....");
  
}

void loop()
{
 lcd.setCursor(0,1);
 lcd.print("                "); 
 lcd.setCursor(0,1);
 lcd.print(time);
  // Wirecuts:
  if (digitalRead(redwire) == HIGH && redcut == 0)
  {
   redcut = 1;
    delay(100);
  }

  if (digitalRead(bluewire) == HIGH && bluecut == 0)
  {
   bluecut = 1;
    delay(100);
  }

  if (digitalRead(greenwire) == HIGH && greencut == 0)
  {
   greencut = 1;
    delay(100);
  }
 //****************************************************
 
 // Wire cut order: ( red => blue => green )
 
 if (redcut == 1 && bluecut == 0 && greencut == 0 && two == 0)
 {
   two = 1;
   digitalWrite(redone, LOW);
   digitalWrite(greenone, HIGH);
   Serial.println("Red cut");
 }
 if (redcut == 1 && bluecut == 1 && greencut == 0 && three == 0)
 {
   three = 1;
   digitalWrite(redtwo, LOW);
   digitalWrite(greentwo, HIGH);
   Serial.println("Red and Blue cut");
 }
 if (redcut == 1 && bluecut == 1 && greencut == 1 && three == 1)
 {
   digitalWrite(redthree, LOW);
   digitalWrite(greenthree, HIGH);
   Serial.println("Disarmed");
    lcd.setCursor(0,0);
  lcd.print("                ");
  lcd.setCursor(0,0);
   lcd.print("....DISARMED.....");
   disarmed:
 delay(5000);
 goto disarmed;
 }
 //******************************************************
 
 //Wrong 
  if (bluecut == 1 && two == 0)
 {
   
   Serial.println("***** BOOM ! *****");
    BOOM();
 }
 
  if (greencut == 1 && two == 0)
 {

   Serial.println("***** BOOM ! *****");
   BOOM();
 }
 
  if (two == 1 && bluecut == 0 && greencut == 1)
 {

   Serial.println("***** BOOM ! *****");
   BOOM();
 } 

// Time:
 
 if (time > 0){
   militime++;
   delay(100);
 }
 if (militime == 10){
militime = 0;
delay(50);
   time--;
}

if (time == 0){
   lcd.setCursor(0,1);
 lcd.print("                "); 
 lcd.setCursor(0,1);
 lcd.print("0");
  BOOM();
}
  
}

void BOOM()
{
  myservoa.write(160);
  lcd.setCursor(0,0);
  lcd.print("                ");
  lcd.setCursor(0,0);
   lcd.print(".....BOOM!......");
   digitalWrite(greenone, LOW);
    digitalWrite(greentwo, LOW);
     digitalWrite(greenthree, LOW);
   boem:
   digitalWrite(redone, HIGH);
  digitalWrite(redtwo, HIGH);
  digitalWrite(redthree, HIGH);
  delay(500);
  digitalWrite(redone, LOW);
  digitalWrite(redtwo, LOW);
  digitalWrite(redthree, LOW);
  delay(500);
  goto boem;
Serial.println("***** BOOM ! *****");
}
 
Van de week de wifi shield binnen gehad en na veel gekloot hem ook aan de praat gekregen.
Moest eerst de firmware op de chip updaten en via een nightly versie van arduino kreeg ik hem dan eindelijk werkend.
Nogsteeds onstabiel maar hij doet het in ieder geval.
Is nog erg slecht ondersteund maar hoop dat ze er werk van maken om hem wat beter te laten functioneren.

Maar goed, na ongeveer 4 uur had ik hem dan eindelijk lokaal werkend, maar nu nog op internet krijgen.
Had nog nooit van port forwarding gehoord maar dat is dus de manier om hem op het WWW te krijgen.
Heb 2 routers en kwam er uiteindelijk op neer dat ik de eerste router moest forwarden naar de 2e ( wireless ) en die weer forwarden naar de arduino.
Maar hij deed het !
Had nu alleen heel traag internet, bleek aan de poort keuze te letten. (8080 en 8081)
Vervolgends op 8082 getest en eindelijk succes !

1482962_570116059740770_704171809_n.jpg



Hij stopt er nu na een tijdje wel spontaan mee, heb ik de oorzaak nog niet van gevonden maar we zijn iig weer een stap verder.
EDIT:
Nog wat aan het spelen geweest en oorzaak lijkt een gevalletje timeout.
/EDIT
Het is af en toe een beetje frustrerend maar deste mooier als het eenmaal werkt.
En ontzettend leerzaam.
 

Vergelijkbare onderwerpen

Terug
Bovenaan