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); }
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); } }
//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); }
static void Pulse(int pin) { WiringPiWrapperDirect.digitalWrite(pin, 0); //Thread.Sleep (100); WiringPiWrapperDirect.digitalWrite(pin, 1); }
static void Clear(int chainCount) { WiringPiWrapperDirect.digitalWrite(StorageClockPin, 0); for (int i = 0; i < chainCount; i++) { WriteByte(0); } WiringPiWrapperDirect.digitalWrite(StorageClockPin, 1); }
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); } }
//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."); }
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."); }
//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); } }
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!"); }
//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"); }
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!"); }
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"); }
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); } }