Ejemplo n.º 1
0
 public void Dispose()
 {
     //WiringPi.WiringPiISRCancel(ECHOPin);
     WiringPi.PinMode(TRIGPin, WiringPiConst.Output);
     WiringPi.DigitalWrite(TRIGPin, WiringPiConst.Low);
     WiringPi.PinMode(TRIGPin, WiringPiConst.Input);
 }
Ejemplo n.º 2
0
        public HCSR04Sensor(int trigPin, int echoPin)
        {
            TRIGPin = trigPin;
            ECHOPin = echoPin;

            WiringPi.PinMode(TRIGPin, WiringPiConst.Output);
            WiringPi.WiringPiISR(ECHOPin, WiringPiConst.IntEdgeBoth, OnIsrEcho);
        }
Ejemplo n.º 3
0
 public void StartDistanceMeas()
 {
     _dataValid = false;
     Distance   = 0.0f;
     WiringPi.DigitalWrite(TRIGPin, WiringPiConst.High);
     Thread.Sleep(200);
     //start impulse
     WiringPi.DigitalWrite(TRIGPin, WiringPiConst.Low);
 }
Ejemplo n.º 4
0
 public void Dispose()
 {
     WiringPi.DigitalWrite(_display.CLKPin, WiringPiConst.Low);
     WiringPi.DelayMicroseconds(1);
     WiringPi.DigitalWrite(_display.DIOPin, WiringPiConst.Low);
     WiringPi.DelayMicroseconds(1);
     WiringPi.DigitalWrite(_display.CLKPin, WiringPiConst.High);
     WiringPi.DelayMicroseconds(1);
     WiringPi.DigitalWrite(_display.DIOPin, WiringPiConst.High);
 }
Ejemplo n.º 5
0
 public TM1637Display(int clockPin, int dataPin, int brightnessPercent)
 {
     CLKPin = clockPin;
     DIOPin = dataPin;
     Reset();
     WiringPi.PinMode(CLKPin, WiringPiConst.Output);
     WiringPi.PinMode(DIOPin, WiringPiConst.Output);
     WiringPi.PullUpDnControl(DIOPin, WiringPiConst.PudUp);
     // clearing display included
     BrightnessPercent = brightnessPercent;
 }
Ejemplo n.º 6
0
 public WriteSection(TM1637Display display)
 {
     _display = display;
     WiringPi.DigitalWrite(_display.CLKPin, WiringPiConst.High);
     WiringPi.DelayMicroseconds(1);
     WiringPi.DigitalWrite(_display.DIOPin, WiringPiConst.High);
     WiringPi.DelayMicroseconds(1);
     WiringPi.DigitalWrite(_display.DIOPin, WiringPiConst.Low);
     WiringPi.DelayMicroseconds(1);
     WiringPi.DigitalWrite(_display.CLKPin, WiringPiConst.Low);
 }
Ejemplo n.º 7
0
        private void OnIsrEcho()
        {
            int now = WiringPi.Micros();

            if (WiringPi.DigitalRead(ECHOPin) == WiringPiConst.High)
            {
                _startTime = now;
            }
            else
            {
                _endTime   = now;
                _dataValid = true;
            }
        }
Ejemplo n.º 8
0
 public void Read()
 {
     for (Tries = 1; Tries < Retries + 1; Tries++)
     {
         WiringPi.PinMode(DataPin, WiringPiConst.Output);
         WiringPi.DigitalWrite(DataPin, WiringPiConst.Low);
         WiringPi.DelayMicroseconds(20000);
         WiringPi.DigitalWrite(DataPin, WiringPiConst.High);
         WiringPi.DelayMicroseconds(30);
         WiringPi.PinMode(DataPin, WiringPiConst.Input);
         // Chip start to transfer
         int state     = WiringPi.DigitalRead(DataPin);
         int lastState = WiringPiConst.High;
         for (int i = 0; i < MaxTransferReads; i++)
         {
             int readCounter = 0;
             do
             {
                 readCounter++;
                 lastState = state;
                 WiringPi.DelayMicroseconds(1);
                 state = WiringPi.DigitalRead(DataPin);
             } while (!(lastState == WiringPiConst.High && state == WiringPiConst.Low) && readCounter < 100);
             // --> High->Low trigger
             lastState        = WiringPiConst.Low;
             _timeOfChange[i] = WiringPi.Micros();
         }
         GetDHTData(1);
         if (IsDataValid)
         {
             break;
         }
         else
         {
             Thread.Sleep(400);
         }
     }
 }
Ejemplo n.º 9
0
        private void WriteByte(byte data)
        {
            byte mask = 0x01;

            for (int bit = 0; bit < 8; bit++)
            {
                WiringPi.DigitalWrite(CLKPin, WiringPiConst.Low);
                WiringPi.DigitalWrite(DIOPin, (data & 1 << bit) > 0 ? WiringPiConst.High : WiringPiConst.Low);
                mask <<= 1;
                WiringPi.DigitalWrite(CLKPin, WiringPiConst.High);
                WiringPi.DelayMicroseconds(1);
            }
            // switch DIO to input for ACK reading
            WiringPi.PinMode(DIOPin, WiringPiConst.Input);
            // reset DIO before set to output
            WiringPi.DigitalWrite(DIOPin, WiringPiConst.Low);
            // start ACK reading
            WiringPi.DigitalWrite(CLKPin, WiringPiConst.Low);
            ACKErr = true;
            for (int readTry = 1; readTry <= 100; readTry++)
            {
                // read/wait ACK (max. 100us)
                if (WiringPi.DigitalRead(DIOPin) == WiringPiConst.High)
                {
                    WiringPi.DelayMicroseconds(1);
                }
                else
                {
                    ACKErr = false;
                    break;
                }
            }
            WiringPi.DigitalWrite(CLKPin, WiringPiConst.High);
            WiringPi.PinMode(DIOPin, WiringPiConst.Output);
            WiringPi.DigitalWrite(CLKPin, WiringPiConst.Low);
        }