コード例 #1
0
        private static void     SevenSegmentChained()
        {
            Console.Write("Setup ");

            WiringPiWrapperDirect.WiringPiSetupGpio();

            WiringPiWrapperDirect.pinMode(SerialDataPin, PinType.OUTPUT);
            WiringPiWrapperDirect.pinMode(StorageClockPin, PinType.OUTPUT);
            WiringPiWrapperDirect.pinMode(ShiftClockPin, PinType.OUTPUT);

            WiringPiWrapperDirect.digitalWrite(SerialDataPin, 0);
            WiringPiWrapperDirect.digitalWrite(ShiftClockPin, 0);

            Console.WriteLine("completed.");

            const int chainCount = 2;

            Clear(chainCount);
            Thread.Sleep(1000);

            for (int i = 0; i < 16; i++)
            {
                WiringPiWrapperDirect.digitalWrite(StorageClockPin, 0);

                WriteByte(SegmentCode [i] + i % 2);

                WiringPiWrapperDirect.digitalWrite(StorageClockPin, 1);

                Thread.Sleep(1000);
            }

            Clear(chainCount);
        }
コード例 #2
0
        const int NotOutEnabledPin = 26;                // !OE

        private static void     SchieberegisterSingle() //Shifting Register
        {
            Console.Write("Setup ");

            WiringPiWrapperDirect.WiringPiSetupGpio();

            WiringPiWrapperDirect.pinMode(SerialDataPin, PinType.OUTPUT);
            WiringPiWrapperDirect.pinMode(StorageClockPin, PinType.OUTPUT);
            WiringPiWrapperDirect.pinMode(ShiftClockPin, PinType.OUTPUT);

            WiringPiWrapperDirect.digitalWrite(SerialDataPin, 0);
            WiringPiWrapperDirect.digitalWrite(ShiftClockPin, 0);

            Console.WriteLine("completed.");

            for (int i = 0; i < 8; i++)
            {
                WiringPiWrapperDirect.digitalWrite(StorageClockPin, 0);
                Thread.Sleep(1);

                WriteByte(1 << i);

                WiringPiWrapperDirect.digitalWrite(StorageClockPin, 1);

                Thread.Sleep(1000);
            }
        }
コード例 #3
0
        //Das zuletzt geschriebene Bit liegt an Ausgang 0 an
        //Returnwert ist der hinausgeschobene Teil
        private static int WriteByteReturn(int state)
        {
            int shiftout = 0;
            int soll;

            WiringPiWrapperDirect.digitalWrite(StorageClockPin, 0);

            for (int i = 1; i < 0x100; i = i << 1)
            {
                if (WiringPiWrapperDirect.digitalRead(ShiftOutPin) > 0)
                {
                    shiftout |= i;
                }

                soll = (state & i) > 0 ? 1 : 0;
                WiringPiWrapperDirect.digitalWrite(SerialDataPin, soll);

                Pulse(ShiftClockPin);

                for (int sleep = 0; sleep < 40; sleep++)                 // Verzögerung von In zu Out
                {
                    ;
                }
            }

            WiringPiWrapperDirect.digitalWrite(StorageClockPin, 1);
            return(shiftout);
        }
コード例 #4
0
        static void Pulse(int pin)
        {
            WiringPiWrapperDirect.digitalWrite(pin, 0);

            //Thread.Sleep (100);

            WiringPiWrapperDirect.digitalWrite(pin, 1);
        }
コード例 #5
0
 static void Clear(int chainCount)
 {
     WiringPiWrapperDirect.digitalWrite(StorageClockPin, 0);
     for (int i = 0; i < chainCount; i++)
     {
         WriteByte(0);
     }
     WiringPiWrapperDirect.digitalWrite(StorageClockPin, 1);
 }
コード例 #6
0
        private static void ToggleDirect()
        {
            //1.26 MHZ, laut benchmarks wiringpi direct = 4MHZ, beste c lib bis 22MHz
            WiringPiWrapperDirect.WiringPiSetupGpio();
            WiringPiWrapperDirect.pinMode(18, PinType.OUTPUT);

            while (true)
            {
                WiringPiWrapperDirect.digitalWrite(18, 0);
                WiringPiWrapperDirect.digitalWrite(18, 1);
            }
        }
コード例 #7
0
        //Hier wird nicht gechained, sondern nur die Ausgabe gelesen
        //Mit OE wird vermieden, dass die Zwischenzustaände ausgegeben werden und flackern
        private static void     SchieberegisterChained()
        {
            Console.Write("Setup ");

            WiringPiWrapperDirect.WiringPiSetupGpio();

            WiringPiWrapperDirect.pinMode(SerialDataPin, PinType.OUTPUT);
            WiringPiWrapperDirect.pinMode(StorageClockPin, PinType.OUTPUT);
            WiringPiWrapperDirect.pinMode(ShiftClockPin, PinType.OUTPUT);
            WiringPiWrapperDirect.pinMode(NotOutEnabledPin, PinType.OUTPUT);
            WiringPiWrapperDirect.pinMode(ShiftOutPin, PinType.INPUT);
            WiringPiWrapperDirect.pullUpDnControl(ShiftOutPin, PullUpType.PUD_DOWN);

            WiringPiWrapperDirect.digitalWrite(SerialDataPin, 0);
            WiringPiWrapperDirect.digitalWrite(ShiftClockPin, 0);

            Console.WriteLine("completed.");

            WriteByteReturn(0);
            int lastInput = 0;
            int state;
            int output;

            int loopCount = 10000;

            DateTime start = DateTime.Now;

            for (int loop = 0; loop < loopCount; loop++)
            {
                WiringPiWrapperDirect.digitalWrite(NotOutEnabledPin, 1);

                for (int i = 0; i < 8; i++)
                {
                    state  = 1 << i;
                    output = WriteByteReturn(state);

                    if (output != lastInput)
                    {
                        Console.WriteLine("Schätze da hast Du mächtig Scheisse am Hacken.");
                    }
                    lastInput = state;
                }

                WiringPiWrapperDirect.digitalWrite(NotOutEnabledPin, 0);
            }

            DateTime stop = DateTime.Now;

            Console.WriteLine(loopCount + " Loops in " + new TimeSpan(stop.Ticks - start.Ticks).TotalMilliseconds + " ms.");
        }
コード例 #8
0
        static void TasterWiringPi()
        {
            Console.WriteLine("Dehre");

            WiringPiWrapperDirect.WiringPiSetupGpio();
            WiringPiWrapperDirect.pinMode(17, PinType.OUTPUT);
            WiringPiWrapperDirect.pinMode(18, PinType.INPUT);

            WiringPiWrapperDirect.digitalWrite(17, 0);

            bool lastButtonPressed = false;
            bool ledBurning        = false;

            //while(WirinPiWrapper.millis() < 30000)
            for (var i = 0; i < 100000000; i++)
            {
                bool buttonPressed = WiringPiWrapperDirect.digitalRead(18) > 0;

                //Draufdrücken
                if (buttonPressed && !lastButtonPressed)
                {
                    Console.WriteLine("Press");
                    if (ledBurning)
                    {
                        WiringPiWrapperDirect.digitalWrite(17, 0);
                    }
                    else
                    {
                        WiringPiWrapperDirect.digitalWrite(17, 1);
                    }

                    ledBurning = !ledBurning;

                    lastButtonPressed = true;
                }
                //Loslassen
                if (!buttonPressed && lastButtonPressed)
                {
                    Console.WriteLine("Release");
                    lastButtonPressed = false;
                    Thread.Sleep(30);                           //Prellschalter
                }
            }

            WiringPiWrapperDirect.digitalWrite(17, 0);
            Console.WriteLine("sers.");
        }
コード例 #9
0
        //Das zuletzt geschriebene Bit liegt an Ausgang 0 an
        //Nachdem Q7S nicht benötigt wird, reicht ein StorageClockPin am Ende
        private static void WriteByte(int state)
        {
            for (int i = 1; i < 0x100; i = i << 1)
            {
                if ((state & i) > 0)
                {
                    WiringPiWrapperDirect.digitalWrite(SerialDataPin, 1);
                }
                else
                {
                    WiringPiWrapperDirect.digitalWrite(SerialDataPin, 0);
                }

                Pulse(ShiftClockPin);

                Thread.Sleep(1);
            }
        }
コード例 #10
0
        static void Pwm()
        {
            Console.WriteLine("Servus Luigi.");
            WiringPiWrapperDirect.WiringPiSetupGpio();
            WiringPiWrapperDirect.pinMode(17, PinType.OUTPUT);

            int testCount = 10000000;

            for (int loopCount = 0; loopCount < testCount; loopCount++)
            {
                WiringPiWrapperDirect.digitalWrite(17, 1);
                WiringPiWrapperDirect.delayMicroseconds(7);
                //Thread.Sleep (7);
                WiringPiWrapperDirect.digitalWrite(17, 0);
                //Thread.Sleep (3);
                WiringPiWrapperDirect.delayMicroseconds(3);
            }

            Console.WriteLine("Scheiss World!");
        }
コード例 #11
0
        //http://www.sunfounder.com/index.php?c=case_incs&a=detail_&id=126&name=Super%20Kit%20For%20Raspberry%20Pi

        public static void GleichstromHBrueckeL293D()
        {
            const int EnablePin = 25;
            const int MotorPin1 = 12;
            const int MotorPin2 = 16;


            Console.WriteLine("Setup.");

            WiringPiWrapperDirect.WiringPiSetupGpio();
            WiringPiWrapperDirect.pinMode(EnablePin, PinType.OUTPUT);
            WiringPiWrapperDirect.pinMode(MotorPin1, PinType.OUTPUT);
            WiringPiWrapperDirect.pinMode(MotorPin2, PinType.OUTPUT);

            WiringPiWrapperDirect.digitalWrite(MotorPin1, 0);
            WiringPiWrapperDirect.digitalWrite(MotorPin2, 0);

            WiringPiWrapperDirect.digitalWrite(EnablePin, 1);
            Console.WriteLine("Enabled");

            WiringPiWrapperDirect.digitalWrite(MotorPin1, 1);
            Console.WriteLine("Pin1 activiert.");
            Thread.Sleep(2000);
            WiringPiWrapperDirect.digitalWrite(MotorPin1, 0);
            Console.WriteLine("Pin1 deactiviert.");

            Thread.Sleep(1000);

            WiringPiWrapperDirect.digitalWrite(MotorPin2, 1);
            Console.WriteLine("Pin2 activiert.");
            Thread.Sleep(2000);
            WiringPiWrapperDirect.digitalWrite(MotorPin2, 0);
            Console.WriteLine("Pin2 deactiviert.");

            Console.WriteLine("Press 2 disable");
            Console.ReadKey();
            WiringPiWrapperDirect.digitalWrite(EnablePin, 0);
            Console.WriteLine("disabled");
        }
コード例 #12
0
        static void Buzzer()
        {
            //Ungewöhnliches Beispiel, PNP, wir steuern also mit negativ an, d.h. wir beepen, wenn wir kein Signal haben
            //Hier PNP

            Console.WriteLine("Servus Luigi.");
            WiringPiWrapperDirect.WiringPiSetupGpio();
            WiringPiWrapperDirect.pinMode(17, PinType.OUTPUT);

            int testCount = 5
            ;

            for (int loopCount = 0; loopCount < testCount; loopCount++)
            {
                WiringPiWrapperDirect.digitalWrite(17, 1);
                Thread.Sleep(400);
                WiringPiWrapperDirect.digitalWrite(17, 0);
                Thread.Sleep(400);
            }

            Console.WriteLine("Scheiss World!");
        }
コード例 #13
0
        public static void WiringPiBenchmarkDelegates()
        {
            Console.WriteLine("Servus Luigi.");

            WiringPiWrapperDirect.WiringPiSetupGpio();

            WiringPiWrapperDirect.pinMode(17, PinType.OUTPUT);
            WiringPiWrapperDirect.pinMode(18, PinType.INPUT);

            DateTime  start     = DateTime.Now;
            const int testCount = 100000000;

            for (int i = 0; i < testCount; i++)
            {
                WiringPiWrapperDirect.digitalWrite(17, i & 1);
            }

            TimeSpan duration = new TimeSpan(DateTime.Now.Ticks - start.Ticks);

            Console.WriteLine("WiringPi WriteTime  = " + (duration.TotalMilliseconds / testCount) + "ms,  " + testCount / (duration.TotalMilliseconds * 1000) + " MHz");

            WiringPiWrapperDirect.digitalWrite(17, 0);

//			start = DateTime.Now;
//			int soll;
//			for (int i = 0; i < testCount; i++) {
//				soll = i & 1;
//				WirinPiWrapper.digitalWrite (17, soll);
//				//WirinPiWrapper.delayMicroseconds (1);	//Seltener Fehler, delay drückt von 2 MHz auf 0,2 MHz fehlerlos
//				for (int y = 0; y < 30; y++)			//0,55 MHz fehlerfrei!
//					;
//				if (WirinPiWrapper.digitalRead(18)  != soll)
//					Console.WriteLine ("Scheisndregg " + i);
//			}
//
//			duration = new TimeSpan (DateTime.Now.Ticks - start.Ticks);
//			Console.WriteLine ("WiringPi WriteReadTime  = " + (duration.TotalMilliseconds / testCount) + "ms,  " + testCount / (duration.TotalMilliseconds * 1000)  + " MHz");
        }
コード例 #14
0
        private static void     SevenSegment()
        {
            Console.Write("Setup ");

            WiringPiWrapperDirect.WiringPiSetupGpio();

            WiringPiWrapperDirect.pinMode(SerialDataPin, PinType.OUTPUT);
            WiringPiWrapperDirect.pinMode(StorageClockPin, PinType.OUTPUT);
            WiringPiWrapperDirect.pinMode(ShiftClockPin, PinType.OUTPUT);

            WiringPiWrapperDirect.digitalWrite(SerialDataPin, 0);
            WiringPiWrapperDirect.digitalWrite(ShiftClockPin, 0);

            Console.WriteLine("completed.");

            for (int i = 0; i < 16; i++)
            {
                WiringPiWrapperDirect.digitalWrite(StorageClockPin, 0);
                //Thread.Sleep (1);

                WriteByte(SegmentCode [i]);

                WiringPiWrapperDirect.digitalWrite(StorageClockPin, 1);

                Thread.Sleep(1000);
            }

            for (int i = 0; i < 16; i++)
            {
                WiringPiWrapperDirect.digitalWrite(StorageClockPin, 0);

                WriteByte(SegmentCode [i] + 1);                         //Der Punkt

                WiringPiWrapperDirect.digitalWrite(StorageClockPin, 1);

                Thread.Sleep(1000);
            }
        }