EnglishSvenska

Gjorde min egen bootloader ISP till Arduino

Eftersom jag inte har en egen programmerare för att bränna bootloaders till Atmega-chip valde jag att göra en egen. Såhär blev den:

Eftersom jag använder en dip-socket kan jag lätt programmera massvis av chip efter varandra om jag vill. Det är bara att knäppa loss och stoppa i nästa.

En fördel med att ha en dedikerad programmerare till Arduino är att man inte behöver dra kablar från en officiell Uno varje gång som man vill bootloada en ny Atmega.

Arduinos webbplats har också några egna guider som beskriver mer utförligt: http://arduino.cc/en/Tutorial/ArduinoISP

 

Komponenter finns här:

Du kan också köpa Atmega med Arduino bootloader och klisterlapp:
Taggad med: , , ,

2D Bilspel i Android (hjälp gärna till att färdigställa)

För ett tag sedan började jag programmera ett spel till android. Eftersom jag inte har tid att göra klart det så tänkte jag här visa hur långt jag kommit och vad som är kvar att göra. Allt är open source och ligger på Github: https://github.com/sebnil/Sketchy-Truck

Jag ser väldigt gärna att spelet blir klart istället för att det ligger och samlar damm i ett privat repository.

Uppdateringar

[2012-06-03] Build path i Eclipse IDE ska fungera. Tidigare behövdes vissa inställningar göras för att få igång spelet.

Sammanfattning

Spelet är ungefär som MX Mayhem fast med en monstertruck istället för en cykel.
Denna video visar den senaste koden:




Bibliotek och teknik som använts

- Andengine
- Box2d extension
- Fysikeditor http://www.physicseditor.de

Fungerar just nu

- Andengine och box2d extension.
- Grundläggande fysik. Bilen beter sig ganska bra men förbättringar kan göras.
- Lutning av bilen med mobilens accelerometer. Tippa telefonen åt vänster och höger kommer att lägga en liten roterande moment på bilen.
- Världens skapas från att redigera XML-filer. Jag har skapat en XML-struktur för att lättare skapa nya världar. Denna generator kan behöva några förbättringar.

Spagettikod

Du är fri att göra förbättringar i kodstruktur om du vill. Jag skulle rekommendera en rengöring eftersom detta var mitt första medelstora projekt till android.

Separation mellan nivåerna och spelmotor

Just nu har jag bara lägga till en ny mapp att lägga till en ny bana till spelet. Däri läggs XML-och bildfiler och på så sätt kommer man att kunna skapa nya banor utan att röra spelmotor. Se world.xml för ett exempel:
https://github.com/sebnil/Sketchy-Truck/blob/master/assets/levels/level1/world.xml

Exempel på resterande struktur: https://github.com/sebnil/Sketchy-Truck/tree/master/assets/levels/level1
shapes.xml innehåller shapes från physicseditor. World.xml innehåller föremål och bakgrund. GFX innehåller grafik. Ganska enkelt.

Testat på

Jag har testat på HTC Desire, Google Galaxy Nexus och Samsung S2. Borde fungera på det mesta.

Källkod och copyright

Allt är på GitHub. Använd koden till det du tycker blir bäst men hjälp till att göra den bättre. Om du gör en förändring som är bra så se till att skicka in den till Github-projektet. Målet med att jag lägger ut allt är för att spelet ska bli närmre klart. Om du använder koden till något annat (exempelvis som material i en 2d andengine tutorial) så lämna en referens till den här bloggen.

Och tack till Emanuele Feronato för det exemplet du skrev om hur man använder box2d för att göra en bil med bra fysik.

Föreslagen todo:

- Ta bort oanvända tillgångar. typsnitt, bilder, ljud etc.
- Menyer ser inte bra ut.
- Lägg z-index för parallax backgrounds. Ange i xml med "zindex = #".
- Olika hastigheter på parallax bakgrunder. Ange i xml.
- Motorljud låter inte bra.
- Formen för bilen verkar vara en liten felaktig. När man rullar med bilen blir kontaktpunkterna inte ok.
- Ta bort laddningstiden vid omstart.
- Att trycka på menyknappen ska pausa spelet och öppna menyn.
- När man klickar på knappen Bakåt ingame ska man komma tillbaka till menyn.
- Lägg till stoppuret och lista bästa tider. Highscore.

Ansikte i Google-resultatet

Google la nyligen till en funktion där man ser ansiktet på författare i Google-resultat. Kul funktion tycker jag. Så här gör du för att få det att fungera:

  1. Lägg in en länk till din google-profil på varje sida på domännamnet. På den här sajten finns det exempelvis en länk längst ner i sidfoten som ser ut såhär:
    <a href="https://plus.google.com/110721217141229430919?rel=author" target="_blank">Google +</a>
  2. Gå in här för att testa att det fungerar: http://www.google.com/webmasters/tools/richsnippets
Taggad med: , ,

Migrerar bloggen från Joomla till WordPress

Dels för att testa något nytt men också för att jag känner att WordPress har bättre tillägg har jag migrerat från Joomla. När jag böt platform passade jag också på att uppdatera utseendet till något mer minimalistiskt.

Gammalt utseende jämfört med det nya:

 

Taggad med:

CakePHP Database Logger

I needed to replace the default file log in CakePHP with one based on mysql instead. I shared the project on Bitbucket if someone else would like to do something similar.

https://bitbucket.org/sebnil/cakephp-database-logger/wiki/Home

Why is this better than file log?

  1. Easier to search
  2. Handles large amount of logging much better
  3. Has better performance (at least in some cases)
Taggad med: , ,

Sök och ersätt sträng i MySQL

Jag behövde nyligen söka i en tabell och ersätta kolumnvärden. Exempelvis kan detta användas för att över en hel blogg ersätta ett visst ord eller fras med något annat.

UPDATE table_name SET column_name = REPLACE(column_name,'original_string','replace_string');

Windows Phone 7-gränssnitt och hemautomation

Inom programmering ska man som regel alltid välja den lösning som är enklast och utan onödig komplexitet. Kanske sa ingen det bättre än Albert Einstein: "Everything should be made as simple as possible, but no simpler". Jag gjorde nyligen om webb-gränssnittet för hemautomationen och försökte då använda mig av denna princip genom att ta många idéer från gränssnittet i Windows Phone 7 som är väldigt rent och minimalistiskt. Den hög med spaggetikod som jag hade tidigare blev snabbt riktigt vacker. Här är några skärmdumpar från det nya gränssnittet:

eventghost_webserver_optimization_3 eventghost_webserver_optimization_2

Och för att jämföra så såg den tidigare versionen ut såhär:

eventghost eventghost4

Vilken som är snyggast kan man givetvis argumentera om men jag lägger min röst på den översta.

Gå till Demo

Koden får du från https://bitbucket.org/sebnil/eventghost-web-gui/get/tip.zip.

Instruktioner för att sätta upp allt

Youtube-video:




Ny mycket renare version

eventghost_webserver_optimization_3

Tyckte att den tidigare versionen var för slö trots att jag gjort vad jag kunnat för att optimera koden. Gjorde ett försök med att slänga ut jQuery Mobile och då gick det genast mycket bättre. I den nya versionen har jag tagit inspiration från Windows Phone 7. Jag har dock skippat allt med Metro och kör bara på en svart bakgrund och knappar med vit ram. Jag tycker att det ser bättre ut när det är minimalistiskt men det viktigaste är endå att den nya versionen är sjukt mycket snabbare än den gamla.

Gå till Demo

Koden får du från https://bitbucket.org/sebnil/eventghost-web-gui/get/tip.zip.

Instruktioner för att sätta upp allt

Några förbättringar:

  1. Rensade bort all seg kod från jQuery Mobile. Less is more!
  2. Endast 4 http request per sidvisning. Toksnabba sidvisningar är resultatet.
  3. Ingen onödig javascript. Tog bort ganska mycket av min egen kod.
  4. Lättare html. jQuery Mobile gjorde många enkla saker svåra. I den nya versionen så borde en nybörjare inom html-programmering kunna lista ut hur man ska göra egna gränssnitt. Det är i alla fall min förhoppning.

Youtube-video:




Kan nu dammsuga när jag sitter på bussen

roomba_hacking_arduino_2Köpte nyligen en Arduino för att se vad den klarar av. Ett av de första projekten blev att plocka isär fjärrkontrollen till dammsugaren för att kunna styra den från datorn. I datorn har jag en webbserver som går att komma åt från mobiltelefon, tablet och det mesta som har en webbläsare. Läs mer om mitt projekt att fjärrstyra autonoma dammsugare.


Kontrollera Roomba från en webbplats med hjälp av Arduino

Vem har inte velat dammsuga när man inte är hemma? Den tekniken jag kommer använda är fulhack med att plocka isär fjärrkontrollen till Roomba och koppla in den på en Arduino UNO. För att styra Arduino från datorn via USB använder jag Messenger och låter Eventghost sköta all kommunikation med Serieport-pluginet.

Video:




Hur du gör

1. Skruva isär fjärrkontroll. Löd fast trådar på de knappar som du vill styra.
roomba_hacking_arduino_2

2. Jordad knapp betyder nedtryckt knapp. Jag kopplade ihop jord på Arduino och jord i fjärrkontrollen. Mellan utportarna på Arduino och knapparna satte jag transistorer. En 1:a (5 V) ut från Arduino sätter transistorn i till-läge. Transistorn sluter då mellan den sammankopplade jorden och knappen. Fjärrkontrollen kommer att uppfatta jord på en tryckknapp och luras att tro att det är en knapptryckning. [Uppdatering 2012-06-14] Skrev en förbättrad guide för hårdvara.
roomba_hacking_arduino_1

3. Ladda över kod. Allt är från Messenger till Arduino. Lägger upp en kopia här . Programmet jag kör är väldigt enkelt. Med serieporten skriver man vilken port man vill sätta hög exempelvis "w d 9 1" för write digital port 9 on.

4. Konfigurera Eventghost. Lägg till Serieport-plugin. Kommer inte gå igenom detta detaljerat men bilderna här nedan borde förklara tillräckligt:
serial_out_roomba_arduino
serial_out_roomba
serial_out_roomba_2

5. Förklarar inget om webbservern och gui heller eftersom jag gjort ett inlägg om det tidigare.

 

Taggad med: , ,