logo
MyLinkState
 
RSS-Feed
/template/media/country/de.gif Patrick's Blog RSS
Ein Blog über einfach alles :) interessante artikel zu themen wie Internet, computer oder lifestyle und vielen anderen themengebieten werden behandelt, häufige Aktualisierung und unique content machen einen besuch eigentlich immer lohnenswert ;)
news   blog   nachrichten   internet   computer   aktuell   interessant
Hinzugefügt am 20.03.2011 - 22:09:15 von Patriq
Kategorie: Sonstige Blogs
http://blog.zwotausend.de/
 
 
RSS-Feed - Einträge
 
Gran Turismo Sport für PS4 - nicht schlecht, aber sicher nicht sehr gut
GTS für Playstation 4Gran Turismo Sport ist nun seit 18.10.2017 im Handel und zum Download erhältlich, und die Reviews sind eigentlich einstimmig - die Grafik ist TOP, vor allem mit 4K Auflösung und HDR Bildschirm (den wohl die wenigsten haben), die Steuerung und der Karrieremodus ein absolut schlechter Witz.Gran Turismo Sport wurde bereits vielfach von bekannten Spieleseiten bewertet, etwa von Gamepro, Computerbild oder Chip. Dass die Grafik am aktuellen Stand der Technik ist oder vielleicht etwas weiter ist wohl der einzige Positive Gesichtspunkt, neben einer unglaublich detailreichen Fahrphysik. Aber was hilft das alles neben den zahlreichen Nachteilen? Diese sind etwaÃ- keine Solo-KampagneÃ- Internetverbindung für Führerschein, Kampagne oder Fahrzeugkauf nötigÃ- Strecken müssen erst freigeschalten werden, auch bei Arcade-ModusÃ- Online-Modus zeichnet sich durch ständiges Gedrängel und schubsen ausDabei ist es wichtig zu erwähnen, dass man zwar erst viel Geld verdienen muss und Erfahrungspunkte sammeln, um coole Autos und Strecken freizuschalten, aber das geht erstaunlicherweise einfach: der Trick ist, im Arcademodus ein Benutzerdefiniertes Rennen im Zeitmodus (etwa 24 h mit schweren gegnern) zu starten, und dann die Playstation einfach über Nacht laufen zu lassen (wobei die Controller richtig eingestellt sowie verkabelt werden müssen und sich damit nicht ausschalten oder entladen). Damit hat man bei einem 24 h Rennen eigentlich genug Geld und Erfahrungspunkte, um das teuerste Auto und alle Strecken zu befahren, ohne etwas zu leisten, es reicht, am Ende des Rennens die letzte Runde fertigzufahren, da man auch als Zweiter noch etliche Belohnungen bekommt. Und das Ganze sogar offline im Arcademodus, dem einzigen Modus der ohne Internet funktioniert.Schöne Grafik - aber Spielspaß?Das Erfahrungsystem und der Spielerrang ist damit eigentlich sinnlos, ebenso der Deluxe-Modus mit mehr Spielgeld am Anfang. Mir hat das Spiel bei weitem nicht gereicht, auch weil ich nicht ständig Internet habe und der Führerschein- und Missionenmodus eigentlich kein Internet braucht, es aber trotzdem gesperrt wird. Und mit der langen Entwicklungszeit wäre ein zufriedenstellender Offlinemodus auf jeden Fall Pflicht gewesen, hier hat Sony richtigen Mist gebaut.Immerhin wurde mein Erstattungsantrag, obwohl ich bereits gespielt habe, bewilligt - zu Recht, denn es stand nichts in der Beschreibung, dass ohne Grund der Karrieremodus (Fahrschule etc) nur online möglich ist, und davon kann man eigentlich nicht ausgehen!Was denkt ihr über das Spiel, seid ihr derselben Meinung oder kann euch der Onlinemodus voll überzeugen?
23.10.2017 - 16:39:00
http://blog.zwotausend.de/2017/10/gran-turismo-sport-fur-ps4-nicht.html
 
Guardians of the Galaxy - Awesome Mix Vol.1, Vol.2 sowie Galaxy Mix Vol.1
Guardians of the Galaxy Vol.1 (2014, IMDB: 8.1) und Vol.2 (2017, IMDB: 7.9) ist eine US-amerikanischer Science-Fiction Actionfilm-Reihe. Die Filme gehen auf die Handlung der gleichnamigen Comics des Marvel Verlags ein und erhalten bisweilen sehr gute Kritiken. Die Veröffentlichung der Filmmusik, stets eine Zusammenstellung der bei den Filmszenen benutzten und meist sehr bekannten und beliebten Musikstücke, trägt dabei den Namen Awesome Mix und ist als CD, MP3 und auch auf (nur noch selten benutzer) Kassette sowie Vinyl erhältlich.Nachfolgend eine Songliste der bereits erschienenen Awesome-Mixes:Vol. 11. Hooked on a Feeling (Blue Swede) | Youtube2. Go All the Way (Raspberries) | Youtube3. Spirit in the Sky (Norman Greenbaum) | Youtube4. Moonage Daydream (David Bowie) | Youtube5. Fooled Around and Fell in Love (Elvin Bishop) | Youtube6. I'm Not in Love (10cc) | Youtube7. I Want You Back (The Jackson 5) | Youtube8. Come and Get Your Love (Redbone) | Youtube9. Cherry Bomb (The Runaways) | Youtube10. Escape - The Piña Colada Song (Rupert Holmes) | Youtube11. O-o-h Child (Five Stairsteps) | Youtube12. Ain't No Mountain High Enough (Marvin Gaye & Tammi Terrell) | YoutubeBei Vol. 1 & 2 wurden nur Songs, die aus den 80er Jahren oder älter sind, benutzt, da sie laut den Filmmachern einen "Wendepunkt" der Musikgeschichte darstellen, was man auch durchaus so unterschreiben kann denke ich. Außerdem wurde kein Musiker bzw. keine Gruppe zweimal erlaubt - ein Umstand, der wohl bald aufgegeben wird bzw. nicht unbedingt zwingend eingehalten werden muss, da eine band durchaus zwei sehr gut passende und trotzdem verschiedene Songs veröffentlichen kann.Volume 2 wartet mit dem letzten Song dann aber sogar mit einer kompletten Neuveröffentlichung in Zusammenarbeit mit David Hasselhoff auf.Vol.21. Mr. Blue Sky (Electric Light Orchestra) | Youtube2. Fox on the Run (Sweet) | Youtube3. Lake Shore Drive (Aliotta Haynes Jeremiah) | Youtube4. The Chain (Fleetwood Mac) | Youtube 5. Bring It On Home to Me (Sam Cooke) | Youtube6. Southern Nights (Glen Campbell) | Youtube7. My Sweet Lord (George Harrison) | Youtube8. Brandy You're a Fine Girl ( Looking Glass) | Youtube9. Come a Little Bit Closer (Jay and the Americans) | Youtube10. Wham Bam Shang-A-Lang (Silver) | Youtube11. Surrender (Cheap Trick) | Youtube12. Father and Son (Cat Stevens) | Youtube13. Flash Light (Parliament) | Youtube14. Guardians Inferno (The Sneepers featuring David Hasselhoff) | YoutubeDaneben gibt es immer wieder zahlreiche Einträge auf Youtube, Blogs oder anderen Webseiten die die folgenden Awesome-Mixes "erraten" wollen bzw. vorschlagen, was unbedingt dabei sein muss, weil man selbst ja so ein guter Song-Kenner ist. Nun, ich habe mir ein paar dieser Listen von Wahrsagern angesehen, und muss sagen dass sie neben grauenvollen Zukunftsvisionen auch noch einen sehr schlechten Musikgeschmack haben.Natürlich lässt sich über den Geschmack streiten, aber .. hört euch einfach mal eine solche Zusammenstellung an oder seht nach, welche Songs dabei sind. Schrecklich.Nun, natürlich kann man auch schlecht vorhersagen was darin vorkommt, weil die Musik ja auch zu den Filmszenen passt, und man sich auch beim Hören noch "zurückerinnert", wodurch die Songs noch etwas besser erscheinen und mehr Eindruck hinterlassen als sonst.Wagen wir uns also an einen neuen (nicht Awesome Mix 3 weil dieser ja von den Filmemachern erst noch geschrieben wird) Galaxy Mix heran, mit ähnlichen Bedingungen wie der Awesome Mix selbst: x Maximal von 1991 x absoluter Klassikerx hat man im Idealfall schonmal gehörtx bringt gute Launex passt zu einem romantischen Science-Fiction Actionfilmxxx Schreibt mir gerne einen Song per eMail an mail@zwotausend.de, falls ihr findet ihr habt das passende Musikstück das noch fehlt, oder einfach in die Kommentare. Vielen Dank xxxGalaxy Mix Vol.11. Sunshine Reggae (Laid Back) | Youtube2. Celebration (Kool & The Gang) | Youtube3. Dancing in the dark (Bruce Springsteen) | Youtube4. Joyride (Roxette) | Youtube5. Un cuore con le ali (Eros Ramazotti) | Youtube6. I want you to want me (Cheap Trick) | Youtube7. Thunderstruck (AC/DC) | Youtube8. I'm still standing (Elton John) | Youtube 9. More than I can say (Leo Sayer) | Youtube10. Lovely Day (Bill Withers) | Youtube11. The time of my Life (Bill Medley & Jennifer Warnes) | Youtube12. You can call me Al (Paul Simon) | YoutubeIch habe natürlich noch einige Songs in der Hinterhand, für einen Galaxy Mix Vol. 2 in der Zukunft, falls gewünscht :)Ich freue mich natürlich jederzeit über Kritik oder positives Feedback :)
24.08.2017 - 16:41:00
http://blog.zwotausend.de/2017/08/guardians-of-galaxy-awesome-mix-vol-1.html
 
Booting from USB and installing Windows 7 on current Acer notebooks like the Acer Aspire M5
Created by Valeria_aksakova - Freepik.comWhen wen want to install an older Windows (like Windows 7) on a notebook like the M5, we find multiple problems I will try to explain and solve in the following. The fact that we do not have a hard drive disc (HDD) in many of the new laptops doesn't make it easier.At first, we must change the Bios settings to boot from USB (USB HDD, USB CD, and further options; shift them to the highest level that the system asks for these options first) and, in addition, change from the UEFI setting to the normal boot method (as UEFI is intended for Windows 8 and higher). The USB drive can be formatted FAT of NTFS - it should now work in both ways. I have here NTFS as my ISO file for Windows 7 does only support this. You will probably get into the Bios by pressing (multiple presses) F2 or F8. We should now be able to boot from our bootable USB stick (prepared by the RUFUS program and a Windows ISO, that was installed on the stick via Rufus). A problem we can face next is that we are not able to install Windows on our partitions - whether or not we delete or re-format our harddrive. The reason for this may be that Windows 8 you used or bought with your computer used GPT as disk format on your HDD - what does sometimes not work for Windows seven or similar. In addition to the install feature, your USb drive with the windows ISO should also offer you the option to "repair" your computer and by this method to change your partition style:From your Windows 7 DVD or bootable stick, click Repair your computer. Then select Command Prompt in the repair window. Once you've entered the command prompt, type diskpart to enter the utility. Type select disk # replacing "#" with the drive number of the one you wish to format. To see a list of disks, type list disk. Type clean. This deletes all volumes from the drive. Type convert mbr to convert the disk to MBR (you can repeat this process and in step 3 replace with the command convert gpt to go back to GPT).See this tutorial for more info. [Alternatively, Rufus may theoretically offer the option to "install" the live USB stick in GPT mode and UEFI, and an installation is possible without switching to mbr. But this does not work if your downloaded Windows is not capable of UEFI mode, generally this method is not safe.]By this method, we now have MBR partitions where we can install Windows 7 or other older versions of Windows.Another problem you might now observe is that the installation of Windows runs fine, but the computer is rebooting and trying to install Windows from the beginning.Having a closer look, you can find out that the boot manager you previously installed is blocked by the Bios of your notebook, what can happen when you install something like an older Windows or a modified version - what is not generally a bad thing! The option to change is "secure boot", better to say switch this function off, or insert the .efi file manually to the allowed ones (the options here differ from Bios to Bios). Then your new Windows should be allowed to start.Comment if you have further ideas! :)
20.02.2017 - 12:02:00
http://blog.zwotausend.de/2017/02/booting-from-usb-and-installing-windows.html
 
Die Highscore Datei (.dat) in Sierras 3D Ultra Pinball - Creep Night nach Belieben verändern (cheaten) mit HEX Editor
Creep NightWer dieses Pinball-Spiel kennt, weiß, dass es einen (oder die ganze Familie) für etliche Stunden fesseln kann: 3D Ultra Pinball - Creep Night. In diesem Blogpost soll es darum gehen, wie man das Spiel erstens bestmöglich unter den neuen Windows-Versionen wie Windows 7 oder Wondows 8 (inklusive x64) zum Laufen bringt mitsamt der Musik und Sprachansagen, andererseits lernen wir, wie man die Highscore-Datei beliebig verändert und sich damit an die Spitze "spielen" kann, was jedoch nur aus Interesse durchgeführt werden sollte und nicht um zu schummeln oder zu betrügen. Da meine Freunde mittlerweile wissen dass ich das kann gelten Highscores nur noch wenn andere es bezeugen :)Also fangen wir mal kurz an mit der Installationsanleitung: Es wird (selbstverständlich) eine originale CD benötigt, und mit einer neuen Datei von dieser Sierra Hilfeseite kann das Spiel auf neuen Windows Versionen installiert werden, eine CD ist dann zum Spielen auch nicht mehr nötig.Aber nun zu der Highscore-Datei. Sie liegt im Hauptverzeichnis mit der Bezeichnung PINBALL2.DAT und kann mit einem beliebigen Texteditor geöffnet werden, was allerdings wenig weiterhilft, man sieht dort nur die Spielernamen.Was wir zum Ã-ffnen benötigen ist ein Hex-Editor, da die Datei in diesem Format erstellt wurde. Ich verwende den kostenlosen xvi32, jeder andere sollte auch funktionieren. Sofern man noch nicht gespielt hat, sieht die Highscore-Liste im Spiel wie man rechts sieht aus: Demospieler wurden bereits angelegt, mit wenigen Punkten. Wir sehen schon, was prinzipiell verändert werden kann: der Name, der Punktestand und die Anzahl Bälle (3 oder 5) die man im Spiel zur Verfügung hatte.Im Hexeditor öffnen wir die besagte Datei und sehen dann rechts sichtbares Bild: auf der linken Seite die Hex-codes (zB. 1A oder FF) und rechts eine Entsprechung in ASCII, also lesbaren Zeichen, die jedoch in diesem Fall wenig aussagt da es willkürliche Festlegungen sind, außer bei den Namen. Das Musik-Zeichen zum Beispiel hat keine Funktion als solches im Spiel nachher. Was interessiert sind die Werte, die sehen wir mit der Funktion Data Inspector oder einfach unten links im Programm nach Char Dec. Es macht übrigens einen Unterschied, ob wir im rechten Fenster Werte bearbeiten oder links. Links müssen wir Hex codes eingeben (z.B. F1), rechts Buchstaben zum Beispiel. Das rechte Fenster ist also eine Art "Übersetzung" des Linken in eine lesbare Sprache, so gut es geht. Sehen wir uns an, wie die Highscores abgespeichert sind. Wir erkennen ein Muster: 8 Kästchen vor dem Spielernamen, dann der Name, ein Leeres (leer nenne ich solche mit dem Hex Wert 00, sie müssen zwar dort sein wo sie sind aber wir dürfen das nicht verändern), ein Belegtes und wieder 7 Leere. Das ist die Abfolge die immer wiederkehrt, so wird ein Spieler mit seinen Punkten gespeichert. Diese Abfolge ist wichtig, denn das Programm liest die Zeichen nacheinander aus und rekonstruiert damit die Punkte und alles Weitere.Wir sehen, dass das Ganze vier Mal analog stattfindet, für vier Highscore-Felder im Spiel (3 für 3 Levels und eines für "Global"). Es sind immer fünf Namen (oben sieht man vier da das Programm für den jeweils fünften noch keinen Namen aber schon Punkte vergeben hat), also die genannte Abfolge 20 Mal. Ich werde im Folgenden erklären, wie man einen solchen Speicherstand / Highscore verändert, andere zu ändern ist ja analog. Aufpassen muss man nur mit der Reihenfolge: Das Spiel zeigt nacheinander einfach die Scores an, hat man also einen hohen Highscore für einen Spieler weiter unten einprogrammiert (z.B. Player 4 oben im Beispiel) steht dieser auch nicht an erster Stelle; das Programm ändert die Rangfolge beim eigenständigen Speichern automatisch, hier mit dem Editor muss / müsste man es manuell für jeden Spieler machen!Wir kümmern uns um Spieler 3 der ersten Fünfergruppe (erinnern Sie sich: der fünfte Spieler hat vom Programm noch keinen Namen zugewiesen bekommen, und die Gruppen stehen für die "Tische": die erste Fünfergruppe für Global, die Zweite für den ersten Flippertisch, die Dritte für den Dritten und die Vierte für den Zweiten (das Labor). Ein bisschen verwirrend aber so ist es nunmal :)Sie sehen, ich habe mir das Programm schön positioniert damit ich genau den zu bearbeitenden Spieler in einer Zeile sehe, das macht vieles einfacher. Beginnen wir mit dem Highscore. Dieser ist in den Kästchen 1, 2, 3, 5 und 6 festgehalten. Befassen Sie sich kurz mit dem Hexadezimalsystem wenn noch nicht geschehen. Jeder Hex Wert steht für eine dezimale ("normale") Zahl von 0 bis 255, in Hex also 00 bzw. FF, siehe Link. Kästchen 1, 2 und 3 werden vom Programm für die Ziffern (nicht Zahlen!!) bis zur Stelle der Millionen verwendet, wir müssen unseren gewünschten Highscore später also zerlegen, aber das zeige ich noch. Dabei macht das Programm eigentlich nichts weiter als eine Aufsummation von Werten. es Nimmt den Wert (den dezimalen Wert) von Kästchen 1 mal 1, addiert den Wert von Kästchen 2 mal 256 und den von Kästchen 3 mal 65536 (das ist 256^2). Damit kann man alle Zahlen bis einer Million (ginge noch höher aber das brauchen wir nicht) darstellen. Im Beispiel ist es Hexadazimal 73, F1 0A, also 115, 241, 10 im Dezimalsystem. Wir nehmen also 115+241*266+10*65536 = 717171. Das Spiel verfährt jedoch anders bzw. von Neuem, wenn es um die Stellen der Millionen geht. Dabei wird der Wert von Kästchen 5 mal 1 genommen und der von 6 mal 266. Im Beispiel also 1*1 + 0*266 = 1 Million. Addieren wir Vorherige Überlegung der Ziffern bis zu einer Million mit diesem Wert gelangen wir zu 1717171 als Highscore-Wert. Und das steht auch im Spiel bei Player 3 im ersten "Globalen" Highscore-Register.Die Anzahl Bälle versteckt sich nach dem Spielernamen, und zwar 2 Kästchen danach, und wird einfach dem Wert nach (3 oder 5) gespeichert, im Beispiel oben sehen wir dort den Wert 5.Kommen wir zum Namen - diesen verändern wir am Besten rechts bei den "übersetzten" Werten, das Programm übersetzt es uns dann automatisch nach links zurück ins Hexadezimale. Wenn wir neue Stellen für den Namen brauchen gehen wir im Programm unter Edit auf insert String und dann Hex String, um neue Stellen zu bekommen. Wie lange der Name ist ist dem Pinball später beim Auslesen der Highscore Datei ziemlich egal, wichtig ist dass das Vorher (die 8 Kästchen inklusive der leeren mit 00 darin) und Nachher (leer, Ballanzahl, 7 leere) bestehen bleibt, denn das verwendet es um zischen den Spielern zu trennen. Wenn das Spiel beim Anzeigen der Highscores abstürzt heißt das es wurde etwas verändert das dann nicht mehr gelesen werden konnte - Sie haben sich nicht gut an meine Anweisungen gehalten dann wahrscheinlich :)Ich verändere den Namen zu Patrick!!, was Sie in dem nächsten Screenshot wo ich die Ergebnisse vorstelle die wir hier zusammen im Editor bearbeiten sehen können. Die Ballanzahl setze ich auf 3 (also Hexadezimal 03). Und als Highscore wählen wir 4 Milliarden 444 Millionen 444 Tausend 444. Also 4444444444. Wir trennen wir besprochen bei der Million: 4444 Millionen und 444444.Die Millionen teilen wir durch 256, das ergibt 17 komma irgendwas, das nach dem Komma lassen wir weg das müssen wir ausgleichen mit Kästchen 5 der 8 Highscore-Kästchen. Also bekommt Kästchen 6 den Wert 16. Rechnen wir 4444-(17*256) bleibt uns ein Rest von 92. Dieser Wert also für Kästchen 5. Dann zu den Werten unter der Million: 444444 geteilt durch 65536 ergibt 6,x (lies: Komma irgendwas). Also Wert 6 für Kästchen 3. Übrig bleiben 51228, geteilt durch 256 macht das 200,x. Wert 200 für Kästchen 2 also, und den Rest von 28 für das erste Kästchen. Phiu, gar nicht so einfach.Aber wir haben es geschafft: Nach dem Speichern sieht es im Spiel wie man es oben sieht aus, alles passt. Im Editor habe ich die Werte in Hex eingegeben (also angefangen mit 1C für die 28 die wir oben berechnet hatten).Es hat sich ein bisschen was verschoben weil ja mein Name länger ist als "Player 3" das vorher da stand, aber das ist ja kein Problem, wir erinnern uns: wichtig ist nur die Abfolge von leeren und besetzten Kästchen, die das Spiel später mithilfe der Datei umrechnet in die Highscore-Liste. Was rechts im Editor zu sehen ist ist völlig irrelevant außer dem Namen, die anderen Zeichen sind willkürlich zugewiesen.Eine kleine Hintergrundinfo noch: die 256 als Unterteilung wurde natürlich nicht zufällig gewählt von den Programmierern. Im Hexadezimalsystem sind genau die Werte 0 bis 255 (also 256 Zahlen) pro "Wert" möglich, und 256 ist genau 2^8, also ein byte. Der Computer kann mit bytes gut umgehen, und ein byte sind übrigens meist 8 bits (ein bit kann entweder 0 oder 1 sein), was pro byte genau 256 Möglichkeiten zum Abspeichern einer Variable bietet. Wir hätten das Ganze auch im Binärsystem (anstatt im Hexadezimalen und schlussendlich im Dezimalen) durchrechnen können, aber glauben Sie mir - das macht noch weniger Spaß.Viel Spaß beim Spielen, ich würde mich freuen wenn ihr euch in den Kommentaren kurz verweigt falls es euch geholfen hat ;)
17.11.2015 - 20:17:00
http://blog.zwotausend.de/2015/11/die-highscore-datei-dat-in-sierras-3d.html
 
[How to] Netzlaufwerke der Uni Regensburg am Windows PC einrichten
Einfacher Zugriff auf Netzlaufwerke der URViele kennen diese Situation: in den CIP-Pools stehen am PC die wichtigen Netzlaufwerke zur Verfügung, man möchte aber nicht ganze Abende in der Universität verbringen, um Arbeiten am PC zu erledigen, für die man gezwungenermaßen das Uninetzwerk benötigt. Die Einbindung der verfügbaren Laufwerke am eigenen PC ist jedoch kein Problem, auch auf die Software von Novell kann man mit aktuellen, weit verbreiteten Betriebssystemen wie Windows 7 oder 8 bzw. 8.1 verzichten.Der Name sagt es schon: es geht um Netzlaufwerke, man muss sich zum Zugriff erst einmal im Universitätsnetzwerk befinden. Also entweder von einem der vielen angebundenen Wohnheime aus zugreifen, oder von einem anderen Ort aus mittels des VPN-Clients. Über den VPN-Dienst wird man dann mit dem Universitätsnetzwerk verbunden, eine Anleitung ist hier aufrufbar.zum Vergrößern einfach anklicken!Wenn man bereits mit dem eigenen Rechner im Uninetz ist, kann man Netzlaufwerke hinzufügen, indem man bei Windows im Arbeitsplatz die Funktion Netzlaufwerk verbinden aufruft. Visuell ist die Schaltfläche rechts nochmal aufgezeigt, je nach Windows-Version sieht das Ganze ein wenig anders aus, der Zugriff erfolgt aber vom Arbeitsplatz (der bei den neuen Versionen gerne Computer heißt) aus. So weit, so gut :)Netzlaufwerk verbindenWenn wir also auf Netzlaufwerk verbinden klicken, geht das rechts sichtbare Fenster auf - wie gesagt, ein wenig unterscheidet sich natürlich die Darstellung zwischen den Betriebssystemen, irgendwas muss sich ja ändern um die Preise rechtzufertigen. Wir können uns wie wir sehen einen Laufwerksbuchstaben aussuchen (dieser hat keine erwähnenswerte weitere Funktion, man kann einen beliebigen wählen der frei ist) und .. ja, das Feld Ordner. Dieses ist ein sehr wichtiges Feld, in das wir den Ort des gewünschten, zu öffnenden Netzlaufwerks eintragen müssen. Die Universität hat uns dafür schon einige Beispiele bereitsgestellt, siehe diese Seite mit Netzlaufwerken. Da diese nicht immer den gewollten Effekt haben bzw. eventuell auch ein wenig veraltet sind, liste ich im Folgenden einige nützliche Pfade auf, die man in das Ordner-Feld eintragen kann, zum Zugriff auf die Laufwerke. Ein kleine Info noch vorab: wenn man ein Netzlaufwerk öffnen möchte, muss man sich natürlich mit seinem Benutzernamen (der Form vip12345) sowie Passwort einloggen, da jeder Benutzer andere Rechte besitzt, auf Laufwerke zuzugreifen oder Dateien zu ändern, schließlich gibt es auch persönliche Laufwerke auf denen man selbst Daten speichern kann, wie wir später sehen werden.\\TITAN-SHARE1\SHARE1\   ist DAS Standardverzeichnis schlechthin; In Netstorage kann über den Browser beispielsweise das Unterverzeichnis \\Titan-Share1\Share1\Kurssoft\ inklusive dem persönlichen Speicherplatz aufgerufen werden.\\TITAN-STUD01\STUD01\   hierüber ist der Zugriff auf den persönlichen Speicherplatz auf den Uniservern möglich, sehr nützlich, um Dateien von Zuhause z.B. zum CIP-Pool Rechner zu bekommen ohne USB-Stick etc., da auf den dortigen Rechnern dieses eigene Laufwerk nach Anmeldung auch vorhanden ist; laut Onlineauftritt der Universität kann man dort etwa 600 MB speichern.Es gibt noch viele weitere Laufwerke, die man je nach Bedarf öffnen kann; Beispielsweise \\TITAN-SHARE4\SHARE4\ oder \\TITAN-SOFT1\SOFT1\ . Die top-level Verzeichnisse wie etwa \\TITAN-SHARE1\ ohne das Unterverzeichnis lassen sich meist nicht öffnen.Die Uni listet auf ihrer Seite zu den Netzlaufwerken auch sogenannte Laufwerksbuchstaben auf, etwa G für den persönlichen Speicherplatz. Diese haben jedoch nichts zu tun mit den Laufwerksbuchstaben, die wir oben im Netzlaufwerk verbinden Fenster eingeben konnten, sie haben für den Zugriff auf Laufwerke vom eigenen PC aus keine Funktion, man sollte sich davon nicht verwirren lassen.Tip: Man kann auf einem CIP-Pool Rechner auch eigene Programme installieren. Hier eine Anleitung dazu.
12.01.2015 - 14:59:00
http://blog.zwotausend.de/2015/01/how-to-netzlaufwerke-der-uni-regensburg.html
 
Understanding and using infrared signals from a remote control via an Arduino and an IR sensor
The used infrared light sensorIn the previous articles on measuring IR pulses and controlling equipment with an IR LED we learnt how our Arduino can help us retreiving the pulses from a remote control and using in later together with an infrared light source. Now we want to understand how the code works, so that we can set up our own machine that can be controlled with an infrared remote control. For this we have to have a closer look on the pulse sequence and how infrared equipment communicates.A usual remote control is sending the signal in three components: a starting block, middle and ending block with very typical pulse lengths. Let's look at an example IR pulse sequence, measured with the arduino using this tutorial:| ON | OFF |          (whereby OFF was calculated with the micros() command)8960,4507,537,570,554,580,524,608,528,582,554,583,557,569,535,573,583,550,594,1658,562,1714,522,1769,503,1678,562,1709,535,1714,566,1678,554,1714,554,1682,566,572,536,570,562,1717,527,591,545,586,578,557,523,584,552,587,549,1683,561,1709,531,580,556,1718,526,1773,523,1719,497,1711,533,40054,8950,2247,553,1194672,   Listing has ended, amount of pairs: 36 -------- New record: --------| ON | OFF |          (whereby OFF was calculated with the micros() command)8957,4504,536,574,558,577,587,547,533,582,554,578,586,552,528,579,553,581,583,1656,560,1711,533,1715,581,1663,553,1717,527,1704,592,1651,565,1716,532,578,554,579,581,556,528,1714,582,540,536,575,565,625,535,552,532,1713,579,1663,557,1716,528,572,560,1708,536,1715,581,1658,558,1716,528,40055,8929,2259,565,1194672,   Listing has ended, amount of pairs: 36We see two sequences from different buttons of the remote. The amount of pairs is equal, as well as beginning and ending pulses: The beginning looks like 8957 us, 4507 us and the ending is obviously something like 40055 us, 8929 us, 2259 us (where us = microseconds, what equals one millionth second). What is between differs, related to the different button. Important is that we cannot say the pulses are exactly the same all the time - pulses like 580 us and 540 us are equal in the range of imprecision. With this information we can shorten, or better to say smoothen the code in blocks of around 560 us, thus we have blocks of 4x, 8x and 16x this value plus one of about 40 milliseconds (8960 is 16 times 560 f.ex.). These general pulse blocks are important when we want to use a remote control to operate with the IR sensor and the Arduino, because we need general pulse schemes, as single pulses differ in the microseconds range but nevertheless contain the same information (they seem to differ, because the measuring is not 100 % accurate, what is no more a problem when we understand the codeblocks).Now we tell the Arduino to output the simplified sequence in addition to the normal output by using a program like this: // THIS CODE WAS IMPLEMENTED BY PATRICK BAYER, patriq@web.de IN THE YEAR 2014. DO NOT CLAIM THIS CODE FOR YOUR OWN IN ANY WAY AND QUOTE THE SOURCE WHEN YOU USE IT.#define valuepairs 100     // amount of rows in the matrix; int is not possible because the matrix definition below doesn't allow it.int measuremethod1 = LOW;  // the value is LOW, so pulseIn() waits for the pin to go LOW, starts timing, then waits for the pin to go HIGH and stops timing. int measuremethod2 = LOW;  // set this to HIGH if you want so see the result measuring only HIGH pulses; you loose the first pulse by doing this by the wayint measureoutput;         // placeholder for serial outputbyte irpin=2;              // IR Sensor position on Arduinolong matrix[valuepairs][2];    // definition of the matrix -> 100 y rows and 2 x culumns, resulting in 200 storable values in total; seint ende;                  // variable integer for ending, cause matrix is normally not filled totallybyte changemethods=1;      // starting mode; in the loop sequence always HIGH,LOW,HIGH,LOW,... measureint blocklength=556;       // code block length, differs with different remote controlint imprecisionrange=150;  // the range we look up- and downwards the defined blocklength                 //----------- The program begins herevoid setup() {   Serial.begin(9600); }void loop()                             {    savePulseSequence();     if(ende>0) {serialOutput();}                                        }//----------- We define the smoothening of our output values by assigning a multiplier in respect to the defined blocklengthbyte multiplier (long rawblocklength){byte ausgabe;{for(int j=1;j<100;j++){if(rawblocklength*10/blocklength<=j*10+2 && rawblocklength*10/blocklength>=j*10-2){ausgabe=j;}}}return(ausgabe); }//----------- We define the rounding of our output values; change rd=10 to f.ex. 100 to round on full hundreds and so onlong roundvalues(long rundwert){byte rd=10; if(rundwert-rundwert/rd*rd>(rd/2)){return(rundwert/rd*rd+rd);}else{return(rundwert/rd*rd);}}                    //----------- We define the measuring and saving of our pulse sequencevoid savePulseSequence(){  ende=valuepairs;  // for resetting   if(changemethods==1)                                     {    for(int i=0;i<valuepairs;i++)                                                             {      matrix[i][0]=pulseIn(irpin, measuremethod1);      matrix[i][1]=micros();      if(matrix[i][0]==0){ende=i; i=valuepairs; if(matrix[0][0]>1){changemethods=0;}}     }    measureoutput=measuremethod1;                          }  else                               {      for(int i=0;i<valuepairs;i++)                                                             {      matrix[i][0]=pulseIn(irpin, measuremethod2);      matrix[i][1]=micros();      if(matrix[i][0]==0){ende=i; i=valuepairs; if(matrix[0][0]>1){changemethods=1;}}     }    measureoutput=measuremethod2;    }}//----------- This is the function needed for the output of the measured signal pulsesvoid serialOutput(){   if(measureoutput==0){Serial.println("-------- New record: --------");Serial.println(); Serial.println("| ON | OFF |          (whereby OFF was calculated with the micros() command)");Serial.println();}  else              {Serial.println("-------- New record: --------");Serial.println(); Serial.println("| OFF | ON |          (whereby ON was calculated with the micros() command)");Serial.println();}      for(int i=0;i<ende;i++)                    {     // Output of the raw pulse sequence      Serial.print(matrix[i][0]);      Serial.print(",");      Serial.print(matrix[i+1][1]-matrix[i][1]-matrix[i+1][0]);                     Serial.print(",");      Serial.println();                      }  Serial.print("   Listing has ended, amount of pairs: ");Serial.println(ende);      Serial.print("   CSV: ");                        // Output values as comma separated values    for(int i=0;i<ende;i++)                   {      Serial.print(matrix[i][0]);      Serial.print(",");      Serial.print(matrix[i+1][1]-matrix[i][1]-matrix[i+1][0]);                     Serial.print(",");                      }  Serial.println();      Serial.print("   CSV smooth: ");                 //  Now we output the smooth values    for(int i=0;i<ende;i++)                   {      Serial.print(roundvalues(matrix[i][0]));      Serial.print(",");      Serial.print(roundvalues(matrix[i+1][1]-matrix[i][1]-matrix[i+1][0]));                     Serial.print(",");                      }  Serial.println();     Serial.print("   Multiplier: ");                 // Output the calculated multiplier, with respect to the defined blocklength    for(int i=0;i<ende;i++)                   {      Serial.print(multiplier(matrix[i][0]));      Serial.print(",");      Serial.print(multiplier(matrix[i+1][1]-matrix[i][1]-matrix[i+1][0]));                     Serial.print(",");                      }  Serial.println();        Serial.print("   Method for measuring: (1=HIGH, 0=LOW):"); Serial.println(measureoutput);   Serial.println();}The multiplier() function does exactly what was explained in the text above. Download the program as .ino here if you like, for better visibility. So now we have the pulse sequence in a very smooth and - what is most important - always the same way, the corresponding output line looks like this:Multiplier: 16,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,1,1,3,1,3,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,3,1,3,1,3,1,3,1,72,16,4,1,0So this is the "code" from a special button. The last values 1 and 0 can be deleted, they are not important and may not be checked. Let's now have a look at the output of the program that checks for pulses and compares them with one or more stored pulses:Now checking for pulses. . . Pulse sequence received.A button was recognized: number 1.. . . Pulse sequence received.I am sorry, no stored button matches. . Pulse sequence received.I am sorry, no stored button matches. . Pulse sequence received.A button was recognized: number 1.. . . . . . . . . . . . . . The program leading to this output:// THIS CODE WAS IMPLEMENTED BY PATRICK BAYER, patriq@web.de IN THE YEAR 2014. DO NOT CLAIM THIS CODE FOR YOUR OWN IN ANY WAY AND QUOTE THE SOURCE WHEN YOU USE IT.#define valuepairs 100     // amount of rows in the matrix; int is not possible because the matrix definition below doesn't allow it.boolean realpulse;         // with this we decide if we've got a real pulse in the loop section, or just zero signal (it may not be a correct pulse);byte irpin=2;              // IR Sensor position on Arduinolong matrix[valuepairs][2];         // definition of the raw data matrix -> y-rows and 2 x-culumnsint ende;                  // variable integer for ending, cause matrix is normally not filled totallybyte changemethods=1;      // starting mode; in the loop sequence always HIGH,LOW,HIGH,LOW,... measureint blocklength=556;       // code block length, differs with different remote controlint imprecisionrange=150;  // the range we look up- and downwards the defined blocklengthbyte remotecode1[][2]={16,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,1,1,3,1,3,1,3,1,3,1,72,16,4,1,0};byte pulsestocheck=35;      // amount of pulse-pairs (ON+OFF counts as one pulse here) to be checked;                                           //----------- The program begins herevoid setup() {   Serial.begin(9600); delay(1000); Serial.println("Now checking for pulses"); }void loop()                             {   savePulseSequence();  Serial.print(". ");  if(realpulse==true)                                                               {    Serial.println();Serial.println();    Serial.println("Pulse sequence received.");     if(checkformatch()>0)                                   {      Serial.print("A button was recognized: number ");      Serial.print(checkformatch());Serial.println(".");       Serial.println();                                     }    else{Serial.println("I am sorry, no stored button matches");Serial.println();}  }}//----------- We define the smoothening of our output values by assigning a multiplier in respect to the defined blocklengthbyte multiplier (long rawblocklength){byte ausgabe;{for(int j=1;j<100;j++){if(rawblocklength*10/blocklength<=j*10+2 && rawblocklength*10/blocklength>=j*10-2){ausgabe=j;}}}return(ausgabe); }//----------- We define the rounding of our output values; change rd=10 to f.ex. 100 to round on full hundreds and so onlong roundvalues(long rundwert){byte rd=10; if(rundwert-rundwert/rd*rd>(rd/2)){return(rundwert/rd*rd+rd);}else{return(rundwert/rd*rd);}}                    //----------- We define the measuring and saving of our pulse sequencevoid savePulseSequence(){  ende=valuepairs;  // for resetting  realpulse=false;  // for resetting   for(int i=0;i<valuepairs;i++)                      {      matrix[i][0]=pulseIn(irpin, LOW);      matrix[i][1]=micros();      if(matrix[i][0]==0){ende=i; i=valuepairs;}     }  if(ende>0)                                                         {    realpulse=true;    for(int i=0;i<ende;i++)                                    {      matrix[i][1]=matrix[i+1][1]-matrix[i][1]-matrix[i+1][0]; }     }}                                                          //----------- This is the function needed for the output of the measured signal pulsesvoid serialOutput(){   Serial.println("-------- New record: --------");Serial.println(); Serial.println("| ON | OFF |          (whereby OFF was calculated with the micros() command)");Serial.println();        for(int i=0;i<ende;i++)                    {     // Output of the raw pulse sequence      Serial.print(matrix[i][0]);      Serial.print(",");      Serial.print(matrix[i+1][1]-matrix[i][1]-matrix[i+1][0]);                     Serial.print(",");      Serial.println();                      }  Serial.print("   Listing has ended, amount of pairs: ");Serial.println(ende);      Serial.print("   CSV: ");                        // Output values as comma separated values    for(int i=0;i<ende;i++)                   {      Serial.print(matrix[i][0]);      Serial.print(",");      Serial.print(matrix[i+1][1]-matrix[i][1]-matrix[i+1][0]);                     Serial.print(",");                      }  Serial.println();      Serial.print("   CSV smooth: ");                 //  Now we output the smooth values    for(int i=0;i<ende;i++)                   {      Serial.print(roundvalues(matrix[i][0]));      Serial.print(",");      Serial.print(roundvalues(matrix[i+1][1]-matrix[i][1]-matrix[i+1][0]));                     Serial.print(",");                      }  Serial.println();     Serial.print("   Multiplier: ");                 // Output the calculated multiplier, with respect to the defined blocklength    for(int i=0;i<ende;i++)                   {      Serial.print(multiplier(matrix[i][0]));      Serial.print(",");      Serial.print(multiplier(matrix[i+1][1]-matrix[i][1]-matrix[i+1][0]));                     Serial.print(",");                      }  Serial.println();      }byte checkformatch(){  byte ausgabe=0;  for(int i=0;i<pulsestocheck;i++)      {                       if(multiplier(matrix[i][0])!=remotecode1[i][0] || multiplier(matrix[i][1])!=remotecode1[i][1]){i=pulsestocheck;}    if(i==pulsestocheck-1){ausgabe=1;}  }   return(ausgabe);}    A new command is included in this version: checkformatch(); It will return a value above zero, when we match the pulse sequence stored at the beginning, in the matrix pulsestocheck. Download this program here.Now we've got a clear output value (1 in this case) we can work with, being able to control the outputs of our Arduino and thousand other things ...
22.12.2014 - 16:06:00
http://blog.zwotausend.de/2014/12/understanding-and-using-infrared.html
 
A successful way to control infrared equipment via an Arduino and an infrared LED
Controlling and LED-stripe with IR lightThis is the second part of my little tutorial on how to measure an IR pulse sequence from a remote control (see this article) and then copy and send this sequence to control equipment like a TV, a lamp or other IR equipment. The adarfuit.com website gives us once more a possible way on how to implement this, but in the following article we want to discuss on how to make it easier and again somehow more convenient in many cases. We can easily use the comma-separated values we got from our pulse measurements from the previous article to control the LED and output the needed 38 kHz signal sequence.Again, first the code, and afterwards an explanation:int irledpin=7;int pulsmatrix[200]=        { // in the next line we put our pulse sequence, starting with the time of our first pulse:8990,4540,530,560,510,640,500,590,580,560,520,580,550,580,580,550,520,580,560,1720,520,1780,510,1660,550,1710,530,1710,560,1690,550,1720,530,1720,580,1650,560,570,570,620,480,1770,520,560,520,580,550,640,490,580,530,640,490,1710,530,1720,550,580,530,1720,550,1690,550,1710,540,1710,560,40030,8980,2240,530                                           };long matrixsum[200];              void setup()                                                               {  pinMode(irledpin, OUTPUT); Serial.begin(9600);  matrixsum[0]=pulsmatrix[0];  for(int i=1;i<200;i++){matrixsum[i]=pulsmatrix[i]+matrixsum[i-1];}       }   // The values are added, what we get is the ending times in microseconds for pulses and pulse-free times.void pulse()                        {    digitalWrite(irledpin, HIGH);    delayMicroseconds(9);         // the value can be 10 or 8 also, but 9 should work quite well as it gives us a pulse very near to 38 kHz.    digitalWrite(irledpin, LOW);    delayMicroseconds(9);           }    void loop(){  delay(1000);              // delay between pulses, may not be too little, at best stay over 300.  Serial.println("Pulse sequence starts");  long start=micros();  for(int i=0;i<200;i+=1)                                     {    while(micros()<start+matrixsum[i]){pulse();}                  // here we send our 38 kHz pulse    i+=1;    while(micros()<start+matrixsum[i]){}                      }   // a pause, until we start our next pulse    Serial.println("done");  Serial.println();     }  In the following a little explanation:The code is easy to understand. We define our pulse sequence at the beginning, where the first time is the length of the first pulse, the next value is the pulse-free time, then the next pulse value and so on. The matrixsum adds all the values in some kind of a ladder, so we have the ending times of the pulses in a very accurate way. That avoids a problematic stretching of the whole sequence and was very accurate in first tests - see the hi-res video on Youtube shown below: In this video the Arduino sends the command to change the color to red every 1 second, and in between I switch to other colors with the "real" remote.You can download the program as .ino file here.
21.12.2014 - 18:09:00
http://blog.zwotausend.de/2014/12/a-successful-way-to-control-infrared.html
 
A different way to use an IR sensor and the Arduino microcontroller to measure infrared pulses/signals
Arduino UNO - like microcontrollerWith a microcontroller board like the Arduino UNO and a simple infrared light sensor you can read the signals and used pulse sequences from an IR remote control. Probably you've been looking at this website from adafruit.com already, so did I at the beginning. But I didn't want to believe that bypassing the board and using cryptic byte-commands is the only way to measure short pulses in the range of few microseconds, and in the following I will show you how to do the pulse measuring in a more understandable yet potentially more precise way. Among others we use the pulseIn() and the micros() function. See how to use the resulting pulse sequence to control IR equipment in this following article. If you want to control your arduino with an available IR remote, check this blogpost.Let's first have a look at the code first, afterwards we'll discuss and explain it.// THIS CODE WAS IMPLEMENTED BY PATRICK BAYER IN THE YEAR 2014. DO NOT CLAIM THIS CODE FOR YOUR OWN IN ANY WAY AND QUOTE THE SOURCE WHEN YOU USE IT.#define messart 2          // Matrix x-values#define valuepairs 100     // Matrix y-values -> should be bigger than amount of sent pulse-pairs by IR-remote; setting the value higher should not bring problems.int measuremethod1 = LOW;    // if value is LOW, pulseIn() waits for the pin to go LOW, starts timing, then waits for the pin to go HIGH and stops timing. int measuremethod2 = HIGH;   // if value is HIGH, pulseIn() waits for the pin to go HIGH, starts timing, then waits for the pin to go LOW and stops timing.                             // pulseIn() returns 0 if no pulse starts within a specified time out !!!int measureoutput;           // placeholder for serial outputint irpin=2;               // IR Sensor position on Arduinoint i;                     // used for different loops; can theoretically be implemented in the loops directlylong matrix[valuepairs][messart];    // definition of the matrixint ende;                  // variable integer for ending, cause matrix is normally not filled totallyint changemethods=1;       // starting mode; in the loop sequence always HIGH,LOW,HIGH,LOW,... measureint sm=10;                 // round, for example on full hundreds, for this sm = 100void setup () {   Serial.begin(9600); }long roundvalues(long rundwert){if(rundwert-rundwert/sm*sm>(sm/2)){return(rundwert/sm*sm+sm);}else{return(rundwert/sm*sm);}}   //  function to round values in the output                      void loop(){      ende=valuepairs;  // for resetting     if(changemethods==1)                                     {    for(i=0;i<valuepairs;i++)                                                             {      matrix[i][0]=pulseIn(irpin, measuremethod1);      matrix[i][1]=micros();      if(matrix[i][0]==0){ende=i; i=valuepairs; if(matrix[0][0]>1){changemethods=0;}}     }    measureoutput=measuremethod1;                          }  else                               {      for(i=0;i<valuepairs;i++)                                                             {      matrix[i][0]=pulseIn(irpin, measuremethod2);      matrix[i][1]=micros();      if(matrix[i][0]==0){ende=i; i=valuepairs; if(matrix[0][0]>1){changemethods=1;}}     }    measureoutput=measuremethod2;    }        if(ende>0)            {        if(measureoutput==0){Serial.println("-------- New record: --------");Serial.println(); Serial.println("| ON | OFF |          (whereby OFF was calculated with the micros() command)");Serial.println();}    else              {Serial.println("-------- New record: --------");Serial.println(); Serial.println("| OFF | ON |          (whereby ON was calculated with the micros() command)");Serial.println();}        for(i=0;i<ende;i++)                      {      Serial.print(matrix[i][0]);      Serial.print(",");      Serial.print(matrix[i+1][1]-matrix[i][1]-matrix[i+1][0]);                     Serial.print(",");      Serial.println();                      }    Serial.print("   Listing has ended, amount of pairs: ");Serial.println(ende);        Serial.print("   CSV: ");     for(i=0;i<ende;i++)                      {      Serial.print(matrix[i][0]);      Serial.print(",");      Serial.print(matrix[i+1][1]-matrix[i][1]-matrix[i+1][0]);                     Serial.print(",");                      }    Serial.println();        Serial.print("   CSV smooth: ");      for(i=0;i<ende;i++)                      {      Serial.print(roundvalues(matrix[i][0]));      Serial.print(",");      Serial.print(roundvalues(matrix[i+1][1]-matrix[i][1]-matrix[i+1][0]));                     Serial.print(",");                      }    Serial.println();         Serial.print("   Method for measuring: (1=HIGH, 0=LOW):"); Serial.println(measureoutput);     Serial.println();  }   } Screenshot of the outputIn the following I'll try to explain how the pulse measuring works.On the right you see a screenshot of the serial output, to see how a measured pulse signal actually looks like. Click the image to enlarge it.IR sensors can have a different allocation of output pins, so installing it on your Arduino relies on you. In many cases, this sensor outputs a high value (5V) when no IR signal is received, so a pulse of the remote is related to a low voltage on the receiving-pin, as shown in the pulse scheme later. This sensor outputs a low voltage when receiving a 38 kHz signal, what means the infrared LED in your remote goes for about 13 microseconds and out for about 13 microseconds, and this loops for e.g. 800 microseconds. These 800 microseconds are then one "pulse" as shown in the pulse scheme afterwards. So we do not measure those very little 38 kHz pulses with the Arduino, because this is done by the sensor itself. For more information visit this page, where you can see pictures of oscilloscope measurements on the topic of IR proximity detection.The program is beginning with defining different integers, whereby this section is very well explained in the code itself. Maybe you wonder why some integers are defined using the method  #define. Look at this explanation for further information on this topic.In a first step we have a function called roundvalues, we use long and not int for this because sometimes quite high times (f.ex. 40000 us, where us means microseconds) are in use, and with int we get a roll over - look here if you're interested why. So with roundvalues we can round the output pulse lengths - and they look more smoothly afterwards.One basic problem stated on the adafruit page on the topic of reading IR signals was that digitalRead () is too slow for our purpose, and this is quite correct. But instead of measuring the time a certain pulse is high or low, a good idea is to measure the pulse length itself using the pulseIn() function. So one possibility would be to say pulseIn(irpin,HIGH) and afterwards pulseIn(irpin, LOW) and save the different times. But this is not what I did in the code above, for a good reason: pulseIn(irpin, HIGH) for example waits for a pulse to go high (so to 5V on the pin) and measures the time this high pulse is active in microseconds, up so several seconds.A typical pulse schemeBut using pulseIn(irpin, LOW) directly afterwards jumps over one pulse, because the low pulse already started. In the scheme on the right we see a pulse, x is the time axis. at the beginning we are at level 1(HIGH). Opening the pulseIn(irpin, HIGH) function gives us the length between b and c - we jump over our first pulse that is between a and b, what is not really good, and that's why we normally use the pulseIn(irpin, LOW) function at the beginning. But let's assume we started with the HIGH method, so now we get the length between b and c. The microcontroller is slightly after position c now, because it waited for the high pulse to end and additionally saved the pulse length for later. Next we want the length between c and d. But using pulseIn(irpin, LOW) now just gives us the length of the pulse beginning at e - because we are already in the LOW-phase and additionally, the pulseIn(irpin, LOW) function waits until a new low pulse begins - we jump over one full pulse, as said at the beginning.So what we do is we use the micros() command to solve this problem. This function gives us the time in microseconds our program is running on the Arduino - at every place we want. So using this function we can save the time where the Arduino actually is executing our commands. So now we do not use the pulseIn(irpin, LOW) and pulseIn(irpin, HIGH) functions in a loop, we only use pulseIn(irpin, LOW) and directly afterwards the micros() command. The output times are stored in a matrix - a list with positions we can later on read out and store values in. To come back to the pulse sequence from above, we first get the length between a and b, the time-position of b, then the length between c and d, and the time-position of d, and so on. The high pulses are afterwards calculated, so for the first HIGH pulse we calculate d minus b minus length (a to b). That's it.Arduino, IR sensor and IR LEDSome other things are implemented to make the output more beautiful, understandable and usable, like comma-separated values (CSV) when we later want to build up our own remote by copying the received pulse sequence. The ende integer is used to throw away unneeded values and get out of the procedure when no more LOW pulse is measured, then the pulseIn() function returns zero after some time. The measurement always switches between HIGH and LOW pulse measuring, and in the output you can see the first (low) pulse cannot be measured using the HIGH method, of course.You can download the .ino program here.
21.12.2014 - 17:39:00
http://blog.zwotausend.de/2014/12/using-ir-sensor-and-arduino.html
 
 
 
Unser RSS-Feed
Natürlich haben wir auch einen eigenen RSS-Feed den Du gerne abonnieren kannst ...
 
 
Suche im Verzeichnis
RSS Verzeichnis nach Blog Feeds oder Tags durchsuchen:
 
 
Login
Benutzername:
Passwort:
 
Passwort vergessen?
 
 
Kategorien
 
 
Top Tags im Verzeichnis
 
 
Tipps zum Surfen
 
© 2009 Blog-Feed.de RSS Verzeichnis für Blogs - Alle Rechte vorbehalten. Rssverzeichnis, Blogverzeichnis, RSS-Portal, Blog-Portal, Blog-Feeds, RSS-Feeds, Blog-News, RSS-News