예제 #1
0
        public void Toggle()
        {
            int pin = 18;

            WiringPiWrapper.WiringPiSetupGpio();
            WiringPiWrapper.PinMode(pin, PinType.OUTPUT);

            while (true)
            {
                WiringPiWrapper.DigitalWrite(pin, 0);
                WiringPiWrapper.DigitalWrite(pin, 1);
            }
        }
예제 #2
0
 private void WriteHalfByte(int command)
 {
     WiringPiWrapper.DigitalWrite(D4Pin, command & 1);                           //TODO war da was mit parallel schreiben in der WiringPiLib??
     WiringPiWrapper.DigitalWrite(D5Pin, command >> 1 & 1);
     WiringPiWrapper.DigitalWrite(D6Pin, command >> 2 & 1);
     WiringPiWrapper.DigitalWrite(D7Pin, command >> 3 & 1);
     WiringPiWrapper.DigitalWrite(EnablePin, 1);
     Thread.Sleep(DeleayInMs);
     WiringPiWrapper.DigitalWrite(EnablePin, 0);
 }
예제 #3
0
        public const int BitTiefe = 4096;               //12 bit 4096 werte

        public AD_MCP3201_SPI(IWiringPiWrapper iWiringPiWarpper, int cs, int clock, int data)
        {
            CS    = cs;
            Clock = clock;
            Data  = data;

            WiringPiWrapper = iWiringPiWarpper;

            WiringPiWrapper.PinMode(CS, PinType.OUTPUT);
            WiringPiWrapper.PinMode(Clock, PinType.OUTPUT);
            WiringPiWrapper.PinMode(Data, PinType.INPUT);

            WiringPiWrapper.DigitalWrite(CS, 1);                //unselect
            WiringPiWrapper.DigitalWrite(Clock, 1);
        }
예제 #4
0
        public const int BitTiefe = 4096;               //12 bit 4096 werte

        public DA_8562FPZ_Parallel(IWiringPiWrapper wiringPiWarpper)
        {
            //Soll mit DigitalWritebyte arbeiten, das schreibt in die ersten 8 GPIO parallel (oder mehr?)
            //Daher gibt es hier aber eine feste Verdrahtung!
            WiringPiWrapper = wiringPiWarpper;

            WiringPiWrapper.PinMode(Data0, PinType.OUTPUT);
            WiringPiWrapper.PinMode(Data1, PinType.OUTPUT);
            WiringPiWrapper.PinMode(Data2, PinType.OUTPUT);
            WiringPiWrapper.PinMode(Data3, PinType.OUTPUT);
            WiringPiWrapper.PinMode(Data4, PinType.OUTPUT);
            WiringPiWrapper.PinMode(Data5, PinType.OUTPUT);
            WiringPiWrapper.PinMode(Data6, PinType.OUTPUT);
            WiringPiWrapper.PinMode(Data7, PinType.OUTPUT);
            WiringPiWrapper.PinMode(Data8, PinType.OUTPUT);
            WiringPiWrapper.PinMode(Data9, PinType.OUTPUT);
            WiringPiWrapper.PinMode(Data10, PinType.OUTPUT);
            WiringPiWrapper.PinMode(Data11, PinType.OUTPUT);

            WiringPiWrapper.PinMode(CE, PinType.OUTPUT);

            WiringPiWrapper.DigitalWrite(CE, 1);

            SetVoltage(0);
        }
예제 #5
0
        public const int BitTiefe = 4096;               //12 bit 4096 werte

        public DA_MCP4921_SPI(IWiringPiWrapper iWiringPiWarpper, int cs, int clock, int sdi)
        {
            CS    = cs;
            Clock = clock;
            SDI   = sdi;

            WiringPiWrapper = iWiringPiWarpper;

            WiringPiWrapper.PinMode(CS, PinType.OUTPUT);
            WiringPiWrapper.PinMode(Clock, PinType.OUTPUT);
            WiringPiWrapper.PinMode(SDI, PinType.OUTPUT);

            WiringPiWrapper.DigitalWrite(CS, 1);                //unselect
        }
예제 #6
0
        /// <summary>
        /// Soll Performanter sein: Setze Wert von 0 bis BitTiefe, eg 12 bit 4096 werte
        /// </summary>
        /// <param name="absoluteVale">Absolute vale.</param>
        public int ReadVoltage()
        {
            WiringPiWrapper.DigitalWrite(CS, 0);                //select

            ReadBit();
            ReadBit();
            ReadBit();                  //Die 16. fallende Flanke kommt nach dem LSB!
            ReadBit();

            int value = 0;

            for (int i = BitTiefe / 2; i > 0; i = i / 2)
            {
                if (ReadBit() == 1)
                {
                    value += i;
                }
            }

            WiringPiWrapper.DigitalWrite(CS, 1);                //unselect

            return(value);
        }
예제 #7
0
        /// <summary>
        /// Soll Performanter sein: Setze Wert von 0 bis BitTiefe, eg 12 bit 4096 werte
        /// </summary>
        /// <param name="absoluteVale">Absolute vale.</param>
        public void SetVoltage(int absoluteVale)
        {
            WiringPiWrapper.DigitalWrite(CS, 0);                //select

            //Send Config Bits
            SendBit(0);                         //Ausgang A, Seite 18 DataSheet
            SendBit(0);                         //Unbuffered
            SendBit(1);                         //Direkt Prozente der ReferenzSpannung
            SendBit(1);                         //Output enabled

            for (int i = BitTiefe; i > 0; i = i / 2)
            {
                if ((i & absoluteVale) > 0)
                {
                    SendBit(1);
                }
                else
                {
                    SendBit(0);
                }
            }

            WiringPiWrapper.DigitalWrite(CS, 1);                //unselect
        }
예제 #8
0
        /// <summary>
        /// Soll Performanter sein: Setze Wert von 0 bis BitTiefe, eg 12 bit 4096 werte
        /// </summary>
        /// <param name="absoluteVale">Absolute vale.</param>
        public void SetVoltage(int absoluteVale)
        {
            WiringPiWrapper.DigitalWriteByte(absoluteVale & 0xff);

            WiringPiWrapper.DigitalWrite(Data8, (absoluteVale & 256) > 0 ? 1 : 0);
            WiringPiWrapper.DigitalWrite(Data9, (absoluteVale & 512) > 0 ? 1 : 0);
            WiringPiWrapper.DigitalWrite(Data10, (absoluteVale & 1024) > 0 ? 1 : 0);
            WiringPiWrapper.DigitalWrite(Data11, (absoluteVale & 2048) > 0 ? 1 : 0);

            WiringPiWrapper.DigitalWrite(CE, 0);
            WiringPiWrapper.DigitalWrite(CE, 1);
        }