
#include "my74hc595.h"
// // #define SHCP 34
// // #define STCP 33
// // #define DS 35
// // int data=100;


// // uint8_t value[8] = {1, 1, 1, 1, 1, 1, 0, 0};
// // void writeto74()
// // {
// //     digitalWrite(STCP, LOW);
// //     // delay(1);
// //     // vTaskDelay(1);
 
// //     for (int i = 0; i < 8; i++)
// //     {
// //         digitalWrite(SHCP, LOW);
// //         // delay(1);
// //         // vTaskDelay(1);
// //         for(int j = 0; j < 1500; j++)
// //         {

// //         }
// //         digitalWrite(DS, value[i]);
// //         // delay(1);
// //         // vTaskDelay(1);
// //         for(int i = 0; i < 1500; i++)
// //         {

// //         }
// //         digitalWrite(SHCP, HIGH);
// //     }
// //     // delay(1);
// //     // vTaskDelay(1);
// //     digitalWrite(STCP, HIGH);
// // }


// // #define SHCP 33
// // #define STCP 34
// // #define DS 35
// // int data=100;


// // uint8_t value[8] = {0, 0, 0, 0, 0, 0, 0, 0};
// // void writeto74()
// // {
// //     digitalWrite(STCP, LOW);
// //     // delay(1);
// //     // vTaskDelay(1);
 
// //     for (int i = 0; i < 8; i++)
// //     {
// //         digitalWrite(SHCP, LOW);
// //         digitalWrite(DS, value[i]);
// //         // for(int j = 0; j < 1500; j++)
// //         // {

// //         // }
        

// //         digitalWrite(SHCP, HIGH);
// //         // for(int i = 0; i < 1500; i++)
// //         // {

// //         // }
// //         // digitalWrite(DS, 0);
// //     }

// //     // delay(1);
// //     // vTaskDelay(1);
// //     digitalWrite(STCP, HIGH);
// // }


// void updatepin()
// {
//     writeto74();
// }

// bool my74hc595_setpin(int index, bool val)
// {
//     if (index < 0 || index > 7)
//     {
//      return false;
//     }
//     value[index] = val;

//     updatepin();
//     return true;
// }


// void my74hc595_init(){
//   pinMode(SHCP, OUTPUT);
//   pinMode(STCP, OUTPUT);
//   pinMode(DS, OUTPUT);
//     digitalWrite(SHCP, LOW);  
//     digitalWrite(STCP, LOW);
//     digitalWrite(DS, LOW);
//   updatepin();
//   tuigan(suo);
// }

// void my74hc595_setallpin(bool val)
// {
//     for (size_t i = 0; i < 8; i++)
//     {
//         value[i] = val;
//         // my74hc595_setpin(i, value);
//         /* code */
//     }
//     updatepin();
// }


#define SHCP 33
#define STCP 34
#define DS 35

uint8_t data=0x00;

void my74hc595_init(){
  pinMode(SHCP, OUTPUT);
  pinMode(STCP, OUTPUT);
  pinMode(DS, OUTPUT);
    digitalWrite(SHCP, LOW);  
    digitalWrite(STCP, LOW);
    digitalWrite(DS, LOW);
  updatepin();
  tuigan(suo);
  
  vTaskDelay(1000 * 10);
}
bool my74hc595_setpin(int index, bool val)
{
    if (index < 0 || index > 7)
    {
     return false;
    }
    if(val)
    {
        data |= (1 << index);
    }
    else
    {
        data &= ~(1 << index);
    }
    return true;
}

void updatepin()
{
    digitalWrite(STCP, LOW);
    shiftOut(DS, SHCP, MSBFIRST, data); 
    digitalWrite(STCP, HIGH);
}
