ivolff

ArduinoBASH 2.0 (Stigmata)

Dec 22nd, 2017
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.17 KB | None | 0 0
  1. #include <SPI.h>
  2. #include <MFRC522.h>
  3. #include <FastLED.h>
  4. #include <EEPROM.h>
  5.  
  6. #define BUZZ_PIN 8
  7. #define RST_PIN 9
  8. #define SS_PIN 10
  9.  
  10. #define NUM_LEDS 8
  11. #define MAX_CARDS 8
  12. #define LED_PIN 5
  13. MFRC522 mfrc522(SS_PIN, RST_PIN);
  14. CRGB leds[NUM_LEDS];
  15. byte reading_card[4];
  16. bool flag;
  17. byte master[4] = {43, 151, 116, 50};
  18. byte cards_count;
  19. void setup() {
  20.   Serial.begin(9600); // инициализация последовательного порта
  21.   SPI.begin(); // инициализация SPI
  22.   mfrc522.PCD_Init(); // инициализация MFRC522
  23.   FastLED.addLeds<WS2812, LED_PIN, RGB>(leds, NUM_LEDS);
  24.   leds[0] = CRGB::Black;
  25.   FastLED.show();
  26.   //EEPROM.write(0, 0);
  27.   byte b;
  28.   EEPROM.get(0, cards_count);
  29. }
  30.  
  31. void loop() {
  32.   delay(100);
  33.   if (mfrc522.PICC_IsNewCardPresent())
  34.   {
  35.     if (mfrc522.PICC_ReadCardSerial())
  36.     {
  37.       Serial.println(" ");
  38.       Serial.println("Card is found");
  39.       Serial.println("Cardnumber:");
  40.       for (int i = 0; i < 4; i++)
  41.       {
  42.         Serial.print(mfrc522.uid.uidByte[i]);
  43.         Serial.println();
  44.         reading_card[i] = mfrc522.uid.uidByte[i];
  45.       }
  46.       Serial.println();
  47.       int i;
  48.       for (i = 0; i < 4; i++) {
  49.         if (reading_card[i] != master[i])
  50.           break;
  51.       }
  52.       if (i == 4) {
  53.         Serial.println("Master card is found");
  54.         tone(BUZZ_PIN, 4500, 100);
  55.         showColor(CRGB::Blue);
  56.         while (true) {
  57.           if (mfrc522.PICC_IsNewCardPresent())
  58.             if (mfrc522.PICC_ReadCardSerial())
  59.             {
  60.               for (int q = 0; q < 4; q++) {
  61.                 Serial.print(mfrc522.uid.uidByte[q]);
  62.                 Serial.println();
  63.                 reading_card[q] = mfrc522.uid.uidByte[q];
  64.               }
  65.               break;
  66.             }
  67.         }
  68.  
  69.         if (reading_card[0] == master[0] && reading_card[1] == master[1] && reading_card[2] == master[2] && reading_card[3] == master[3]) {
  70.           tone(BUZZ_PIN, 4500, 1000);
  71.           for (i = 0; i < 2048; i++) {
  72.             EEPROM.write(i, 0);
  73.           }
  74.           tone(BUZZ_PIN, 4500, 100);
  75.           showColor(CRGB::Blue);
  76.           cards_count = 0;
  77.         } else {
  78.  
  79.             int i;
  80.             byte buf1, buf2, buf3, buf4;
  81.             bool F2 = false;
  82.             for ( i = 0; i < MAX_CARDS; i++) {
  83.               EEPROM.get(1+i*4, buf1);
  84.               EEPROM.get(1+i*4+1, buf2);
  85.               EEPROM.get(1+i*4+2, buf3);
  86.               EEPROM.get(1+i*4+3, buf4);
  87.               if (buf1 == reading_card[0] && buf2 == reading_card[1] && buf3 == reading_card[2] && buf4 == reading_card[3]) {
  88.                 F2 = true;
  89.                 break;
  90.               }
  91.               if (F2) break;
  92.               }
  93.  
  94.           if(!F2){
  95.           for (i = 0; i < 4; i++) {
  96.             EEPROM.write(1+cards_count*4+i, (byte)reading_card[i]);
  97.           }
  98.         cards_count++;
  99.         Serial.print(cards_count);
  100.         Serial.println("Card is added");
  101.         return;
  102.       }
  103.       else{
  104.         i++;
  105.         if(cards_count>1){
  106.         EEPROM.get(cards_count*4,buf4);
  107.         EEPROM.get(cards_count*4-1,buf3);
  108.         EEPROM.get(cards_count*4-2,buf2);
  109.         EEPROM.get(cards_count*4-3,buf1);
  110.         EEPROM.write(i*4,buf4);
  111.         EEPROM.write(i*4-1,buf3);
  112.         EEPROM.write(i*4-2,buf2);
  113.         EEPROM.write(i*4-3,buf1);}
  114.         EEPROM.write(cards_count*4,0);
  115.         EEPROM.write(cards_count*4-1,0);
  116.         EEPROM.write(cards_count*4-2,0);
  117.         EEPROM.write(cards_count*4-3,0);
  118.         cards_count--;
  119.       }
  120.         }
  121.       }
  122.       Serial.println("I am here :D");
  123.       if(reading_card[0] == master[0] && reading_card[1] == master[1] && reading_card[2] == master[2] && reading_card[3] == master[3]) { } else {
  124.         bool found = findCard(reading_card);
  125.         if (!found) {
  126.           tone(BUZZ_PIN, 1500, 300);
  127.           showColor(CRGB::Green);
  128.         } else {
  129.           if(reading_card[0] == 16 && reading_card[1] == 238 && reading_card[2] == 42 && reading_card[3] == 176){
  130.           Stigmata();}
  131.           else{
  132.           tone(BUZZ_PIN, 3500, 100);}
  133.           showColor(CRGB::Red);
  134.         }    
  135.       }
  136.     }
  137.   }
  138. }
  139.  
  140. void showColor(CRGB color) {
  141.   for (int i = 0; i < NUM_LEDS; i++) {
  142.     leds[i] = color;
  143.   }
  144.   FastLED.show();
  145.   delay(2000);
  146.   for (int i = 0; i < NUM_LEDS; i++) {
  147.     leds[i] = CRGB::Black;
  148.   }
  149.   FastLED.show();
  150. }
  151.  
  152. bool findCard(byte card[]) {
  153.   byte buf1, buf2, buf3, buf4;
  154.   bool found = false;
  155.   for (int i = 0; i < MAX_CARDS; i++) {
  156.     EEPROM.get(1+i*4, buf1);
  157.     EEPROM.get(1+i*4+1, buf2);
  158.     EEPROM.get(1+i*4+2, buf3);
  159.     EEPROM.get(1+i*4+3, buf4);
  160.     if (buf1 == card[0] && buf2 == card[1] && buf3 == card[2] && buf4 == card[3]) {
  161.       found = true;
  162.       break;
  163.     }
  164.     if (found) break;
  165.   }
  166.   return found;
  167. }
  168.  
  169. void Stigmata(){
  170.   const int t=220,k=400;
  171.   for(int i=0;i<1;i++){
  172. tone(BUZZ_PIN, k+1500, t);//10
  173. delay(t);
  174. tone(BUZZ_PIN, k+1000, t);
  175. delay(t);
  176. tone(BUZZ_PIN, k+1500, t);
  177. delay(t);
  178. tone(BUZZ_PIN, k+1000, t);
  179. delay(t);
  180. tone(BUZZ_PIN, k+1250, t);
  181. delay(t);
  182. tone(BUZZ_PIN, k+1500, t);
  183. delay(t);
  184. tone(BUZZ_PIN, k+1000, t);
  185. delay(t);
  186. tone(BUZZ_PIN, k+1500, t);
  187. delay(t+20);
  188. tone(BUZZ_PIN, k+1000, t);//11
  189. delay(t);
  190. tone(BUZZ_PIN, k+1500, t);
  191. delay(t);
  192. tone(BUZZ_PIN, k+1000, t);
  193. delay(t);
  194. tone(BUZZ_PIN, k+1500, t);
  195. delay(t);
  196. tone(BUZZ_PIN, k+1250, t);
  197. delay(t);
  198. tone(BUZZ_PIN, k+1500, t);
  199. delay(t/2);
  200. tone(BUZZ_PIN, k+1250, t);
  201. delay(t/2);
  202. tone(BUZZ_PIN, k+1000, t);
  203. delay(t);
  204. tone(BUZZ_PIN, k+875, t);
  205. delay(t);
  206. tone(BUZZ_PIN, k+1500, t);//12
  207. delay(t);
  208. tone(BUZZ_PIN, k+1000, t);
  209. delay(t);
  210. tone(BUZZ_PIN, k+1500, t);
  211. delay(t);
  212. tone(BUZZ_PIN, k+1000, t);
  213. delay(t);
  214. tone(BUZZ_PIN, k+1250, t);
  215. delay(t);
  216. tone(BUZZ_PIN, k+1500, t);
  217. delay(t);
  218. tone(BUZZ_PIN, k+1000, t);
  219. delay(t);
  220. tone(BUZZ_PIN, k+1500, t);
  221. delay(t+20);
  222. tone(BUZZ_PIN, k+1000, t);//13
  223. delay(t);
  224. tone(BUZZ_PIN, k+1500, t);
  225. delay(t);
  226. tone(BUZZ_PIN, k+1000, t);
  227. delay(t);
  228. tone(BUZZ_PIN, k+1500, t);
  229. delay(t);
  230. tone(BUZZ_PIN, k+875, t);
  231. delay(t);
  232. tone(BUZZ_PIN, k+1250, t);
  233. delay(t);
  234. tone(BUZZ_PIN, k+875, t);
  235. delay(t);
  236. tone(BUZZ_PIN, k+725, t);
  237. delay(t+10);
  238. tone(BUZZ_PIN, k+650, t);
  239. delay(t+10);}
  240. }
Advertisement
Add Comment
Please, Sign In to add comment