Advertisement
candale

Master-SlaveCommunication

Sep 21st, 2013
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. // --------------------------- slave -------------------------------------------
  2. #include <Wire.h>
  3.  
  4. int led=13;
  5.  
  6. char cmd[100];
  7. void setup()
  8. {
  9.   Wire.begin(1);
  10.   Wire.onReceive(recEvent);
  11.   pinMode(led, OUTPUT);
  12.   digitalWrite(led, LOW);
  13.   digitalWrite(10, HIGH);
  14. }
  15.  
  16. void loop()
  17. {
  18.   delay(100);
  19. }
  20.  
  21. void proc()
  22. {
  23.   char * a=(char *)malloc(15);
  24.   char * b=(char *)malloc(15);
  25.  
  26.   a=strtok(cmd, " ");
  27.   b=strtok('\0', " ");
  28.  
  29.   if(strcmp(a, "speed")==0)
  30.   {
  31.     analogWrite(13, 150);
  32.   }
  33.   if(strcmp(a, "steps")==0)
  34.   {
  35.     analogWrite(13, 0);
  36.   }
  37. }
  38.  
  39.  
  40. void recEvent(int n)
  41. {
  42.   cmd[0]='\0';
  43.   int i=0;
  44.   while(Wire.available())
  45.   {
  46.     cmd[i++]=Wire.read();
  47.     cmd[i]='\0';
  48.   }
  49.   proc();
  50. }
  51.  
  52. // ------------------------------------------- master --------------------------------------------
  53. #include <Wire.h>
  54.  
  55. void setup()
  56. {
  57.   Wire.begin();
  58.   Serial.begin(19200);
  59. }
  60. char cmd[100];
  61.  
  62. void Read()
  63. {
  64.   cmd[0]='\0';
  65.   int i=0;
  66.   char character;
  67.  
  68.   while(Serial.available()) {
  69.       character = Serial.read();
  70.       cmd[i++]=character;
  71.       cmd[i]='\0';
  72.       delay(1);
  73.   }
  74.  
  75. }
  76.  
  77. void loop()
  78. {
  79.   Read();
  80.   if(cmd[0]!='\0')
  81.   {
  82.     Wire.beginTransmission(1);
  83.     Wire.write(cmd);
  84.     Wire.endTransmission();
  85.     delay(500);
  86.    
  87.   }
  88.  
  89.  
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement