Table of Contents

Part 3: Communicating with the Arduino

The following is the code you will need to follow Part 3 of the Wi-Fi Car tutorial series.

code_3_1

//wifi-car video tutorial
//code_3_1
//
//created 2012
//by Nille
 
void setup() 
{
  Serial.begin(9600);
  pinMode(4, OUTPUT);  //M1
  pinMode(5, OUTPUT);  //E1
  pinMode(6, OUTPUT);  //E2
  pinMode(7, OUTPUT);  //M2
}
 
void loop() 
{
  char i;
  if (Serial.available()) 
  {
    i = Serial.read();    //read
    switch (i)
    {
      case 'w':          //forward
        Serial.println("forward");
        digitalWrite(4, HIGH);
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(7, HIGH);
        break;
      case 's':          //back
        Serial.println("back");
        digitalWrite(4, LOW);
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(7, LOW);
        break;
      case 'a':          //left
        Serial.println("left");
        digitalWrite(4, HIGH);
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(7, LOW);
        break;
      case 'd':          //right
        Serial.println("right");
        digitalWrite(4, LOW);
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(7, HIGH);
        break;
      case 't':          //stop
        Serial.println("stop");
        digitalWrite(5, LOW);
        digitalWrite(6, LOW);
        break;         
      default:
         break;
    }
  }
}

CarJoyChuck

//wifi-car video tutorial
//CarJoyChuck
//
//created 2012
//by Nille
 
#include <math.h>
#include <stdlib.h>
#include "Wire.h"
#include "WiiChuck.h"
 
WiiChuck wii = WiiChuck();
 
int joyX;
int joyY;
 
void setup()
{
  wii.init(); 
  Serial.begin(9600);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
}
 
void loop() 
{
  if (true == wii.read()) 
  { 
    joyX = wii.getJoyAxisX();
    joyY = wii.getJoyAxisY();
 
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);
 
    if(joyY > 240 || joyY < 10)
    { 
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH);
      digitalWrite(6, HIGH);
      digitalWrite(7, HIGH);
    }
    if(joyY < 65 && joyY > 45)
    { 
      digitalWrite(4, LOW);
      digitalWrite(5, HIGH);
      digitalWrite(6, HIGH);
      digitalWrite(7, LOW);
    }
 
    if(joyX > 240 || joyX < 10)
    { 
      digitalWrite(5, HIGH);
      digitalWrite(6, HIGH);
      digitalWrite(4, LOW);
      digitalWrite(7, HIGH);
    }
    if(joyX < 65 && joyX > 45)
    { 
      digitalWrite(5, HIGH);
      digitalWrite(6, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(7, LOW);
    }
 
    Serial.print("joystick:");
    Serial.print(joyX, DEC);
    Serial.print(",");
    Serial.print(joyY, DEC);
 
    Serial.println(" ");
  }  
  delay(200);
}

CarAccelChuck

//wifi-car video tutorial
//CarAccelChuck
//
//created 2012
//by Nille
#include <math.h>
#include <stdlib.h>
#include "Wire.h"
#include "WiiChuck.h"
 
WiiChuck wii = WiiChuck();
 
int AccelX;
int AccelY;
 
void setup()
{
  wii.init(); 
  Serial.begin(9600);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
}
 
void loop() 
{
  if (true == wii.read()) 
  { 
    AccelX  =wii.getAccelAxisX();
    AccelY = wii.getAccelAxisY();
 
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);
 
    if(0 == wii.getButtonZ())
    {  
      if(AccelY > 170)
      { 
        digitalWrite(4, HIGH);
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(7, HIGH);
      }
      if(AccelY < 110)
      { 
        digitalWrite(4, LOW);
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(7, LOW);
      }
 
      if(AccelX > 190)
      { 
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(4, LOW);
        digitalWrite(7, HIGH);
      }
      if(AccelX < 120)
      { 
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(4, HIGH);
        digitalWrite(7, LOW);
      }
    }
 
    Serial.print("accel:");
    Serial.print(AccelX, DEC);
    Serial.print(",");
    Serial.print(AccelY, DEC);
    Serial.println(" ");
 
  }  
  delay(500);
}