Components and supplies
Arduino UNO
IR Sensor
Arduino Proto Shield
Arduino USB Host Shield
Arduino MotorShield Rev3
Tools and machines
MECANUM WHEELS
IMU 6 DOF
DC Motor
Project description
Code
Slave 1
arduino
1// Start the I2C Bus as Slave 1 2 3#include <Wire.h> 4void setup() 5{ 6 Wire.begin(1); // Adress 1 7 Wire.onReceive(reciveEvent); 8 9 //Setup Channel A 10 pinMode(12, OUTPUT); //Initiates Motor Channel A pin 11 pinMode(9, OUTPUT); //Initiates Brake Channel A pin 12 13 //Setup Channel B 14 pinMode(13, OUTPUT); //Initiates Motor Channel A pin 15 pinMode(8, OUTPUT); //Initiates Brake Channel A pin 16} 17 18void loop() 19{ 20} 21 22void reciveEvent ( int howMany) 23{ 24 char c = Wire.read(); 25 if ( c == 'A') 26 { 27 28 //Motor A forward @ full speed 29 digitalWrite(12, HIGH); //Establishes forward direction of Channel A 30 digitalWrite(9, LOW); //Disengage the Brake for Channel A 31 analogWrite(3, 200); //Spins the motor on Channel A at full speed 32 33 //Motor B forward @ full speed 34 digitalWrite(13, HIGH); //Establishes forward direction of Channel B 35 digitalWrite(8, LOW); //Disengage the Brake for Channel B 36 analogWrite(11, 200); //Spins the motor on Channel B at full speed 37 38 } 39 else if ( c == 'B') 40 { 41 //Motor A backword @ full speed 42 digitalWrite(12, LOW); //Establishes backword direction of Channel A 43 digitalWrite(9, LOW); //Disengage the Brake for Channel A 44 analogWrite(3, 200); //Spins the motor on Channel A at full speed 45 46 //Motor B backword @ full speed 47 digitalWrite(13, LOW); //Establishes backword direction of Channel B 48 digitalWrite(8, LOW); //Disengage the Brake for Channel B 49 analogWrite(11, 200); //Spins the motor on Channel B at full speed 50 } 51 52 else if ( c == 'D') 53 { 54 //Motor A backword @ full speed 55 digitalWrite(12, LOW); //Establishes backword direction of Channel A 56 digitalWrite(9, LOW); //Disengage the Brake for Channel A 57 analogWrite(3, 200); //Spins the motor on Channel A at full speed 58 59 //Motor B backword @ full speed 60 digitalWrite(13, HIGH); //Establishes backword direction of Channel B 61 digitalWrite(8, LOW); //Disengage the Brake for Channel B 62 analogWrite(11, 200); //Spins the motor on Channel B at full speed 63 } 64 65 else if ( c == 'E') 66 { 67 //Motor A backword @ full speed 68 digitalWrite(12, HIGH); //Establishes backword direction of Channel A 69 digitalWrite(9, LOW); //Disengage the Brake for Channel A 70 analogWrite(3, 200); //Spins the motor on Channel A at full speed 71 72 //Motor B backword @ full speed 73 digitalWrite(13, LOW); //Establishes backword direction of Channel B 74 digitalWrite(8, LOW); //Disengage the Brake for Channel B 75 analogWrite(11, 200); //Spins the motor on Channel B at full speed 76 } 77 else if ( c == 'F') 78 { 79 //Motor A backword @ full speed 80 digitalWrite(12, LOW); //Establishes backword direction of Channel A 81 digitalWrite(9, LOW); //Disengage the Brake for Channel A 82 analogWrite(3, 200); //Spins the motor on Channel A at full speed 83 84 //Motor B backword @ full speed 85 digitalWrite(13, HIGH); //Establishes backword direction of Channel B 86 digitalWrite(8, LOW); //Disengage the Brake for Channel B 87 analogWrite(11, 200); //Spins the motor on Channel B at full speed 88 } 89 else if ( c == 'G') 90 { 91 //Motor A backword @ full speed 92 digitalWrite(12, HIGH); //Establishes backword direction of Channel A 93 digitalWrite(9, LOW); //Disengage the Brake for Channel A 94 analogWrite(3, 200); //Spins the motor on Channel A at full speed 95 96 //Motor B backword @ full speed 97 digitalWrite(13, LOW); //Establishes backword direction of Channel B 98 digitalWrite(8, LOW); //Disengage the Brake for Channel B 99 analogWrite(11, 200); //Spins the motor on Channel B at full speed 100 } 101 else if ( c == 'C') 102 { 103 104 digitalWrite(8, HIGH); //Engage the Brake for Channel B 105 digitalWrite(9, HIGH); //Engage the Brake for Channel A 106 107 } 108 109} 110
Master
arduino
1//This sketch created by Dimitris Kagioulis.You can modify it at your need. 2//Library belongs to Kristian Sloth Lauszus 3 4#include <PS3BT.h> 5#include <Wire.h> 6 7 8USB Usb; 9BTD Btd(&Usb); 10PS3BT PS3(&Btd); 11 12int sensor1 = A0; 13int sensor2 = A1; 14int sensor3 = A2; 15 16void setup() { 17 18 Serial.begin(9600); 19 Wire.begin(); // 0 adress of Master 20 21 if (Usb.Init() == -1) { 22 Serial.print(F("\ \ 23OSC did not start")); 24 while (1); //halt 25 } 26 27 pinMode(sensor1, INPUT); 28 pinMode(sensor2, INPUT); 29 pinMode(sensor3, INPUT); 30 31} 32 33void loop() 34{ 35 36 long safety1 = digitalRead(sensor1); 37 long safety2 = digitalRead(sensor2); 38 long safety3 = digitalRead(sensor3); 39 40 Usb.Task(); 41 42 char c = Serial.read(); 43 44 45 46 47 if (PS3.PS3Connected || PS3.PS3NavigationConnected) { 48 49 if (PS3.getButtonPress(UP)) { 50 if(safety1 == LOW){ 51 Wire.beginTransmission(1); // transmit to device #1 52 Wire.write( 'A' ); 53 Wire.endTransmission(); // stop transmitting 54 55 Wire.beginTransmission(2); // transmit to device #2 56 Wire.write( 'A' ); 57 Wire.endTransmission(); // stop transmitting 58 } 59 else if (safety1 == HIGH){ 60 Wire.beginTransmission(1); // transmit to device #1 61 Wire.write( 'C' ); 62 Wire.endTransmission(); // stop transmitting 63 64 Wire.beginTransmission(2); // transmit to device #2 65 Wire.write( 'C' ); 66 Wire.endTransmission(); // stop transmitting 67 } 68 } 69 else if (PS3.getButtonPress(DOWN)) { 70 Wire.beginTransmission(1); // transmit to device #1 71 Wire.write( 'B' ); 72 Wire.endTransmission(); // stop transmitting 73 74 Wire.beginTransmission(2); // transmit to device #2 75 Wire.write( 'B' ); 76 Wire.endTransmission(); // stop transmitting 77 78 } 79 80 else if (PS3.getButtonPress(RIGHT)) { 81 if(safety2 == LOW){ 82 Wire.beginTransmission(1); // transmit to device #1 83 Wire.write( 'D' ); 84 Wire.endTransmission(); // stop transmitting 85 86 Wire.beginTransmission(2); // transmit to device #2 87 Wire.write( 'D' ); 88 Wire.endTransmission(); // stop transmitting 89 } 90 else if (safety2 == HIGH){ 91 Wire.beginTransmission(1); // transmit to device #1 92 Wire.write( 'C' ); 93 Wire.endTransmission(); // stop transmitting 94 95 Wire.beginTransmission(2); // transmit to device #2 96 Wire.write( 'C' ); 97 Wire.endTransmission(); // stop transmitting 98 } 99 } 100 else if (PS3.getButtonPress(LEFT)) { 101 if(safety3 == LOW){ 102 Wire.beginTransmission(1); // transmit to device #1 103 Wire.write( 'E' ); 104 Wire.endTransmission(); // stop transmitting 105 106 Wire.beginTransmission(2); // transmit to device #2 107 Wire.write( 'E' ); 108 Wire.endTransmission(); // stop transmitting 109 } 110 else if (safety3 == HIGH){ 111 Wire.beginTransmission(1); // transmit to device #1 112 Wire.write( 'C' ); 113 Wire.endTransmission(); // stop transmitting 114 115 Wire.beginTransmission(2); // transmit to device #2 116 Wire.write( 'C' ); 117 Wire.endTransmission(); // stop transmitting 118 } 119 } 120 else if (PS3.getButtonPress(CIRCLE)) { 121 122 Wire.beginTransmission(1); // transmit to device #1 123 Wire.write( 'F' ); 124 Wire.endTransmission(); // stop transmitting 125 126 Wire.beginTransmission(2); // transmit to device #2 127 Wire.write( 'F' ); 128 Wire.endTransmission(); // stop transmitting 129 130 } 131 else if (PS3.getButtonPress(SQUARE)) { 132 133 Wire.beginTransmission(1); // transmit to device #1 134 Wire.write( 'G' ); 135 Wire.endTransmission(); // stop transmitting 136 137 Wire.beginTransmission(2); // transmit to device #2 138 Wire.write( 'G' ); 139 Wire.endTransmission(); // stop transmitting 140 } 141 else 142 { 143 Wire.beginTransmission(1); // transmit to device #1 144 Wire.write( 'C' ); 145 Wire.endTransmission(); // stop transmitting 146 147 Wire.beginTransmission(2); // transmit to device #2 148 Wire.write( 'C' ); 149 Wire.endTransmission(); // stop transmitting 150 } 151 152 153 if (PS3.PS3Connected) { 154 155 if (PS3.getButtonClick(PS)) { 156 PS3.disconnect(); 157 } 158 } 159 160 } 161 162 } 163 164 165 166
Slave 1
arduino
1// Start the I2C Bus as Slave 1 2 3#include <Wire.h> 4void setup() 5{ 6 Wire.begin(1); // Adress 1 7 Wire.onReceive(reciveEvent); 8 9 //Setup Channel A 10 pinMode(12, OUTPUT); //Initiates Motor Channel A pin 11 pinMode(9, OUTPUT); //Initiates Brake Channel A pin 12 13 //Setup Channel B 14 pinMode(13, OUTPUT); //Initiates Motor Channel A pin 15 pinMode(8, OUTPUT); //Initiates Brake Channel A pin 16} 17 18void loop() 19{ 20} 21 22void reciveEvent ( int howMany) 23{ 24 char c = Wire.read(); 25 if ( c == 'A') 26 { 27 28 //Motor A forward @ full speed 29 digitalWrite(12, HIGH); //Establishes forward direction of Channel A 30 digitalWrite(9, LOW); //Disengage the Brake for Channel A 31 analogWrite(3, 200); //Spins the motor on Channel A at full speed 32 33 //Motor B forward @ full speed 34 digitalWrite(13, HIGH); //Establishes forward direction of Channel B 35 digitalWrite(8, LOW); //Disengage the Brake for Channel B 36 analogWrite(11, 200); //Spins the motor on Channel B at full speed 37 38 } 39 else if ( c == 'B') 40 { 41 //Motor A backword @ full speed 42 digitalWrite(12, LOW); //Establishes backword direction of Channel A 43 digitalWrite(9, LOW); //Disengage the Brake for Channel A 44 analogWrite(3, 200); //Spins the motor on Channel A at full speed 45 46 //Motor B backword @ full speed 47 digitalWrite(13, LOW); //Establishes backword direction of Channel B 48 digitalWrite(8, LOW); //Disengage the Brake for Channel B 49 analogWrite(11, 200); //Spins the motor on Channel B at full speed 50 } 51 52 else if ( c == 'D') 53 { 54 //Motor A backword @ full speed 55 digitalWrite(12, LOW); //Establishes backword direction of Channel A 56 digitalWrite(9, LOW); //Disengage the Brake for Channel A 57 analogWrite(3, 200); //Spins the motor on Channel A at full speed 58 59 //Motor B backword @ full speed 60 digitalWrite(13, HIGH); //Establishes backword direction of Channel B 61 digitalWrite(8, LOW); //Disengage the Brake for Channel B 62 analogWrite(11, 200); //Spins the motor on Channel B at full speed 63 } 64 65 else if ( c == 'E') 66 { 67 //Motor A backword @ full speed 68 digitalWrite(12, HIGH); //Establishes backword direction of Channel A 69 digitalWrite(9, LOW); //Disengage the Brake for Channel A 70 analogWrite(3, 200); //Spins the motor on Channel A at full speed 71 72 //Motor B backword @ full speed 73 digitalWrite(13, LOW); //Establishes backword direction of Channel B 74 digitalWrite(8, LOW); //Disengage the Brake for Channel B 75 analogWrite(11, 200); //Spins the motor on Channel B at full speed 76 } 77 else if ( c == 'F') 78 { 79 //Motor A backword @ full speed 80 digitalWrite(12, LOW); //Establishes backword direction of Channel A 81 digitalWrite(9, LOW); //Disengage the Brake for Channel A 82 analogWrite(3, 200); //Spins the motor on Channel A at full speed 83 84 //Motor B backword @ full speed 85 digitalWrite(13, HIGH); //Establishes backword direction of Channel B 86 digitalWrite(8, LOW); //Disengage the Brake for Channel B 87 analogWrite(11, 200); //Spins the motor on Channel B at full speed 88 } 89 else if ( c == 'G') 90 { 91 //Motor A backword @ full speed 92 digitalWrite(12, HIGH); //Establishes backword direction of Channel A 93 digitalWrite(9, LOW); //Disengage the Brake for Channel A 94 analogWrite(3, 200); //Spins the motor on Channel A at full speed 95 96 //Motor B backword @ full speed 97 digitalWrite(13, LOW); //Establishes backword direction of Channel B 98 digitalWrite(8, LOW); //Disengage the Brake for Channel B 99 analogWrite(11, 200); //Spins the motor on Channel B at full speed 100 } 101 else if ( c == 'C') 102 { 103 104 digitalWrite(8, HIGH); //Engage the Brake for Channel B 105 digitalWrite(9, HIGH); //Engage the Brake for Channel A 106 107 } 108 109} 110
Master
arduino
1//This sketch created by Dimitris Kagioulis.You can modify it at your need. 2//Library belongs to Kristian Sloth Lauszus 3 4#include <PS3BT.h> 5#include <Wire.h> 6 7 8USB Usb; 9BTD Btd(&Usb); 10PS3BT PS3(&Btd); 11 12int sensor1 = A0; 13int sensor2 = A1; 14int sensor3 = A2; 15 16void setup() { 17 18 Serial.begin(9600); 19 Wire.begin(); // 0 adress of Master 20 21 if (Usb.Init() == -1) { 22 Serial.print(F("\ \ 23OSC did not start")); 24 while (1); //halt 25 } 26 27 pinMode(sensor1, INPUT); 28 pinMode(sensor2, INPUT); 29 pinMode(sensor3, INPUT); 30 31} 32 33void loop() 34{ 35 36 long safety1 = digitalRead(sensor1); 37 long safety2 = digitalRead(sensor2); 38 long safety3 = digitalRead(sensor3); 39 40 Usb.Task(); 41 42 char c = Serial.read(); 43 44 45 46 47 if (PS3.PS3Connected || PS3.PS3NavigationConnected) { 48 49 if (PS3.getButtonPress(UP)) { 50 if(safety1 == LOW){ 51 Wire.beginTransmission(1); // transmit to device #1 52 Wire.write( 'A' ); 53 Wire.endTransmission(); // stop transmitting 54 55 Wire.beginTransmission(2); // transmit to device #2 56 Wire.write( 'A' ); 57 Wire.endTransmission(); // stop transmitting 58 } 59 else if (safety1 == HIGH){ 60 Wire.beginTransmission(1); // transmit to device #1 61 Wire.write( 'C' ); 62 Wire.endTransmission(); // stop transmitting 63 64 Wire.beginTransmission(2); // transmit to device #2 65 Wire.write( 'C' ); 66 Wire.endTransmission(); // stop transmitting 67 } 68 } 69 else if (PS3.getButtonPress(DOWN)) { 70 Wire.beginTransmission(1); // transmit to device #1 71 Wire.write( 'B' ); 72 Wire.endTransmission(); // stop transmitting 73 74 Wire.beginTransmission(2); // transmit to device #2 75 Wire.write( 'B' ); 76 Wire.endTransmission(); // stop transmitting 77 78 } 79 80 else if (PS3.getButtonPress(RIGHT)) { 81 if(safety2 == LOW){ 82 Wire.beginTransmission(1); // transmit to device #1 83 Wire.write( 'D' ); 84 Wire.endTransmission(); // stop transmitting 85 86 Wire.beginTransmission(2); // transmit to device #2 87 Wire.write( 'D' ); 88 Wire.endTransmission(); // stop transmitting 89 } 90 else if (safety2 == HIGH){ 91 Wire.beginTransmission(1); // transmit to device #1 92 Wire.write( 'C' ); 93 Wire.endTransmission(); // stop transmitting 94 95 Wire.beginTransmission(2); // transmit to device #2 96 Wire.write( 'C' ); 97 Wire.endTransmission(); // stop transmitting 98 } 99 } 100 else if (PS3.getButtonPress(LEFT)) { 101 if(safety3 == LOW){ 102 Wire.beginTransmission(1); // transmit to device #1 103 Wire.write( 'E' ); 104 Wire.endTransmission(); // stop transmitting 105 106 Wire.beginTransmission(2); // transmit to device #2 107 Wire.write( 'E' ); 108 Wire.endTransmission(); // stop transmitting 109 } 110 else if (safety3 == HIGH){ 111 Wire.beginTransmission(1); // transmit to device #1 112 Wire.write( 'C' ); 113 Wire.endTransmission(); // stop transmitting 114 115 Wire.beginTransmission(2); // transmit to device #2 116 Wire.write( 'C' ); 117 Wire.endTransmission(); // stop transmitting 118 } 119 } 120 else if (PS3.getButtonPress(CIRCLE)) { 121 122 Wire.beginTransmission(1); // transmit to device #1 123 Wire.write( 'F' ); 124 Wire.endTransmission(); // stop transmitting 125 126 Wire.beginTransmission(2); // transmit to device #2 127 Wire.write( 'F' ); 128 Wire.endTransmission(); // stop transmitting 129 130 } 131 else if (PS3.getButtonPress(SQUARE)) { 132 133 Wire.beginTransmission(1); // transmit to device #1 134 Wire.write( 'G' ); 135 Wire.endTransmission(); // stop transmitting 136 137 Wire.beginTransmission(2); // transmit to device #2 138 Wire.write( 'G' ); 139 Wire.endTransmission(); // stop transmitting 140 } 141 else 142 { 143 Wire.beginTransmission(1); // transmit to device #1 144 Wire.write( 'C' ); 145 Wire.endTransmission(); // stop transmitting 146 147 Wire.beginTransmission(2); // transmit to device #2 148 Wire.write( 'C' ); 149 Wire.endTransmission(); // stop transmitting 150 } 151 152 153 if (PS3.PS3Connected) { 154 155 if (PS3.getButtonClick(PS)) { 156 PS3.disconnect(); 157 } 158 } 159 160 } 161 162 } 163 164 165 166
Slave 2
arduino
1// Start the I2C Bus as Slave 2 2 3#include <Wire.h> 4void setup() 5{ 6 Wire.begin(2); // Adress 2 7 Wire.onReceive(reciveEvent); 8 9 //Setup Channel A 10 pinMode(12, OUTPUT); //Initiates Motor Channel A pin 11 pinMode(9, OUTPUT); //Initiates Brake Channel A pin 12 13 //Setup Channel B 14 pinMode(13, OUTPUT); //Initiates Motor Channel A pin 15 pinMode(8, OUTPUT); //Initiates Brake Channel A pin 16} 17 18void loop() 19{ 20} 21 22void reciveEvent ( int howMany) 23{ 24 char c = Wire.read(); 25 if ( c == 'A') 26 { 27 28 //Motor A forward @ full speed 29 digitalWrite(12, HIGH); //Establishes forward direction of Channel A 30 digitalWrite(9, LOW); //Disengage the Brake for Channel A 31 analogWrite(3, 200); //Spins the motor on Channel A at full speed 32 33 //Motor B forward @ full speed 34 digitalWrite(13, HIGH); //Establishes forward direction of Channel B 35 digitalWrite(8, LOW); //Disengage the Brake for Channel B 36 analogWrite(11, 200); //Spins the motor on Channel B at full speed 37 38 } 39 else if ( c == 'B') 40 { 41 //Motor A backword @ full speed 42 digitalWrite(12, LOW); //Establishes backword direction of Channel A 43 digitalWrite(9, LOW); //Disengage the Brake for Channel A 44 analogWrite(3, 200); //Spins the motor on Channel A at full speed 45 46 //Motor B backword @ full speed 47 digitalWrite(13, LOW); //Establishes backword direction of Channel B 48 digitalWrite(8, LOW); //Disengage the Brake for Channel B 49 analogWrite(11, 200); //Spins the motor on Channel B at full speed 50 } 51 52 else if ( c == 'D') 53 { 54 //Motor A backword @ full speed 55 digitalWrite(12, LOW); //Establishes backword direction of Channel A 56 digitalWrite(9, LOW); //Disengage the Brake for Channel A 57 analogWrite(3, 200); //Spins the motor on Channel A at full speed 58 59 //Motor B backword @ full speed 60 digitalWrite(13, HIGH); //Establishes backword direction of Channel B 61 digitalWrite(8, LOW); //Disengage the Brake for Channel B 62 analogWrite(11, 200); //Spins the motor on Channel B at full speed 63 } 64 else if ( c == 'E') 65 { 66 //Motor A backword @ full speed 67 digitalWrite(12, HIGH); //Establishes backword direction of Channel A 68 digitalWrite(9, LOW); //Disengage the Brake for Channel A 69 analogWrite(3, 200); //Spins the motor on Channel A at full speed 70 71 //Motor B backword @ full speed 72 digitalWrite(13, LOW); //Establishes backword direction of Channel B 73 digitalWrite(8, LOW); //Disengage the Brake for Channel B 74 analogWrite(11, 200); //Spins the motor on Channel B at full speed 75 } 76 else if ( c == 'F') 77 { 78 //Motor A backword @ full speed 79 digitalWrite(12, HIGH); //Establishes backword direction of Channel A 80 digitalWrite(9, LOW); //Disengage the Brake for Channel A 81 analogWrite(3, 200); //Spins the motor on Channel A at full speed 82 83 //Motor B backword @ full speed 84 digitalWrite(13, LOW); //Establishes backword direction of Channel B 85 digitalWrite(8, LOW); //Disengage the Brake for Channel B 86 analogWrite(11, 200); //Spins the motor on Channel B at full speed 87 } 88 else if ( c == 'G') 89 { 90 //Motor A backword @ full speed 91 digitalWrite(12, LOW); //Establishes backword direction of Channel A 92 digitalWrite(9, LOW); //Disengage the Brake for Channel A 93 analogWrite(3, 200); //Spins the motor on Channel A at full speed 94 95 //Motor B backword @ full speed 96 digitalWrite(13, HIGH); //Establishes backword direction of Channel B 97 digitalWrite(8, LOW); //Disengage the Brake for Channel B 98 analogWrite(11, 200); //Spins the motor on Channel B at full speed 99 } 100 else if ( c == 'C') 101 { 102 103 digitalWrite(8, HIGH); //Engage the Brake for Channel B 104 digitalWrite(9, HIGH); //Engage the Brake for Channel A 105 106 } 107 108} 109
Downloadable files
I2C INTERFERANCE
Master and Slave
I2C INTERFERANCE
I2C INTERFERANCE
Master and Slave
I2C INTERFERANCE
Comments
Only logged in users can leave comments
mahmoudsabra
0 Followers
•0 Projects
+3
Work attribution
Table of contents
Intro
6
0