Advertisement
Guest User

Untitled

a guest
Oct 25th, 2014
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.04 KB | None | 0 0
  1. #include <cc1101.h>
  2. #include <EEPROM.h>
  3. #include <Wire.h>
  4. #include <PS2X_lib.h>
  5.  
  6. // Create a objekct
  7. CC1101 cc1101;
  8.  
  9. PS2X ps2x;
  10.  
  11.  
  12. // VARIABELS
  13. int error = 0;
  14. byte type = 0;
  15.  
  16. // counter to get increment in each loop
  17. byte counter;
  18. byte b;
  19. byte syncWord = 199;
  20.  
  21.  
  22. void setup()
  23. {
  24. Serial.begin(9600);
  25.  
  26. error = ps2x.config_gamepad(9,8,7,6, true, true); //setup pins and settings: GamePad(clock, command, attention, data, Pressures?, Rumble?) check for error
  27.  
  28. if(error == 0){
  29. Serial.println("Found Controller, configured successful");
  30. }
  31.  
  32. else if(error == 1)
  33. Serial.println("No controller found, check wiring.");
  34.  
  35. else if(error == 2)
  36. Serial.println("Controller found but not accepting commands.");
  37.  
  38. else if(error == 3)
  39. Serial.println("Controller refusing to enter Pressures mode, may not support it. ");
  40.  
  41. type = ps2x.readType();
  42. switch(type) {
  43. case 0:
  44. Serial.println("Unknown Controller type");
  45. break;
  46. case 1:
  47. Serial.println("DualShock Controller Found");
  48. break;
  49. }
  50.  
  51. Serial.println("starter RF");
  52.  
  53.  
  54. // reset the counter
  55. counter=0;
  56. Serial.println("initializing...");
  57. // initialize the RF Chip
  58. cc1101.init();
  59.  
  60. cc1101.setSyncWord(&syncWord, false);
  61. cc1101.setCarrierFreq(CFREQ_433);
  62. cc1101.disableAddressCheck();
  63. //cc1101.setTxPowerAmp(PA_LowPower);
  64.  
  65. delay(1000);
  66.  
  67. Serial.print("CC1101_PARTNUM "); //cc1101=0
  68. Serial.println(cc1101.readReg(CC1101_PARTNUM, CC1101_STATUS_REGISTER));
  69. Serial.print("CC1101_VERSION "); //cc1101=4
  70. Serial.println(cc1101.readReg(CC1101_VERSION, CC1101_STATUS_REGISTER));
  71. Serial.print("CC1101_MARCSTATE ");
  72. Serial.println(cc1101.readReg(CC1101_MARCSTATE, CC1101_STATUS_REGISTER) & 0x1f);
  73.  
  74. Serial.println("device initialized");
  75. //Serial.println("done");
  76. }
  77.  
  78. void loop()
  79. {
  80.  
  81. ps2x.read_gamepad(false, false); //read controller and set large motor to spin at 'vibrate' speed
  82.  
  83. CCPACKET data;
  84. data.length=1;
  85. //byte data = 0;
  86. if(ps2x.ButtonPressed(PSB_RED)){ //will be TRUE if button was JUST pressed
  87. Serial.println("Circle just pressed");
  88. data.data[0] = 20;
  89. Serial.println(data.data[0]);
  90. cc1101.sendData(data);
  91.  
  92. }
  93. else if(ps2x.ButtonReleased(PSB_RED)){ //will be TRUE if button was JUST released
  94. Serial.println("Circle just released");
  95. data.data[0] = 0;
  96. Serial.println(data.data[0]);
  97. cc1101.sendData(data);
  98. }
  99.  
  100. }
  101.  
  102. #include <Wire.h>
  103. #include <EEPROM.h>
  104. #include "cc1101.h"
  105.  
  106.  
  107. // The connection to the hardware chip CC1101 the RF Chip
  108. CC1101 cc1101;
  109.  
  110.  
  111. int j;
  112. byte x;
  113. byte b;
  114. byte i;
  115. byte syncWord = 199;
  116. long counter = 0;
  117. byte chan = 0;
  118.  
  119. // a flag that a wireless packet has been received
  120. boolean packetAvailable = false;
  121.  
  122.  
  123.  
  124. /* Handle interrupt from CC1101 (INT0) gdo0 on pin2 */
  125. void cc1101signalsInterrupt(void) {
  126. // set the flag that a package is available
  127. packetAvailable = true;
  128. }
  129.  
  130. void setup()
  131. {
  132.  
  133. Wire.begin();
  134.  
  135. Serial.begin(9600);
  136. Serial.println("start");
  137.  
  138.  
  139. // initialize the RF Chip
  140. cc1101.init();
  141.  
  142. cc1101.setSyncWord(&syncWord, false);
  143. cc1101.setCarrierFreq(CFREQ_433);
  144. cc1101.disableAddressCheck(); //if not specified, will only display "packet received"
  145. //cc1101.setTxPowerAmp(PA_LowPower);
  146.  
  147. Serial.print("CC1101_PARTNUM "); //cc1101=0
  148. Serial.println(cc1101.readReg(CC1101_PARTNUM, CC1101_STATUS_REGISTER));
  149. Serial.print("CC1101_VERSION "); //cc1101=4
  150. Serial.println(cc1101.readReg(CC1101_VERSION, CC1101_STATUS_REGISTER));
  151. Serial.print("CC1101_MARCSTATE ");
  152. Serial.println(cc1101.readReg(CC1101_MARCSTATE, CC1101_STATUS_REGISTER) & 0x1f);
  153.  
  154. attachInterrupt(0, cc1101signalsInterrupt, FALLING);
  155.  
  156. Serial.println("device initialized");
  157.  
  158. }
  159.  
  160. void ReadLQI()
  161. {
  162. byte lqi = 0;
  163. byte value = 0;
  164. lqi = (cc1101.readReg(CC1101_LQI, CC1101_STATUS_REGISTER));
  165. value = 0x3F - (lqi & 0x3F);
  166. Serial.print("CC1101_LQI ");
  167. Serial.println(value);
  168. }
  169.  
  170. void ReadRSSI()
  171. {
  172. byte rssi = 0;
  173. byte value = 0;
  174.  
  175. rssi = (cc1101.readReg(CC1101_RSSI, CC1101_STATUS_REGISTER));
  176.  
  177. if (rssi >= 128)
  178. {
  179. value = 255 - rssi;
  180. value /= 2;
  181. value += 74;
  182. }
  183. else
  184. {
  185. value = rssi / 2;
  186. value += 74;
  187. }
  188. Serial.print("CC1101_RSSI ");
  189. Serial.println(value);
  190. }
  191.  
  192. void loop()
  193. {
  194. if (packetAvailable) {
  195. Serial.println("packet received");
  196. // Disable wireless reception interrupt
  197. detachInterrupt(0);
  198.  
  199. ReadRSSI();
  200. ReadLQI();
  201. // clear the flag
  202. packetAvailable = false;
  203.  
  204. CCPACKET packet;
  205.  
  206. if (cc1101.receiveData(&packet) > 0) {
  207. if (!packet.crc_ok) {
  208. Serial.println("crc not ok");
  209.  
  210. }
  211.  
  212. else if (packet.crc_ok){
  213. if (packet.length > 0) {
  214. Serial.print("packet: len ");
  215. Serial.print(packet.length);
  216. Serial.print(" data: ");
  217.  
  218. j = 0;
  219. x = packet.data[j];
  220. Serial.print(x);
  221. Serial.print(" ");
  222. Wire.beginTransmission(4);// transmit to device #4
  223. Wire.write(x); // sends one byte
  224. Wire.endTransmission(); // stop tran
  225. Serial.println(".");
  226.  
  227. }
  228. }
  229. }
  230. // Enable wireless reception interrupt
  231. attachInterrupt(0, cc1101signalsInterrupt, FALLING);
  232. }
  233.  
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement