Centrera text och andra textegenskaper

När du designar din text för läslighet så kan du välja att skriva din text helt i mitten av dokumentet. Detta är ett vanligt sätt i flera fall för att skriva rubriker. Att skriva text i mitten kallas för att centrera text. Det finns stilar där hela texten är i mitten. Exempelvis så skrivs många filmmanus med konventionen att all text är centrerad.

I din ordbehandlare så är det lätt att ställa in så att texten är centrerad. Till din hjälp så finns ett antal textjusteringsknappar. Jag utgår här ifrån google docs men ikonerna ser likadana ut i nästan alla andra ordbehandlingsprogram.

Textjusteringsknappar

Det finns fyra vanliga sätt att flytta vart du skriver din text.

Vänsterjustera text

I grundformat när du skriver på svenska eller engelska så är texten vänsterjusterad. Det innebär att det första tecknet börjar att skrivas i vänsterkanten och

Centrera text

All text utgår ifrån mitten.

Högerjustera text

Texten utgår ifrån höger. Det kan vara smidigt för att datera meddelanden och anteckningar. Skriva brevhuvuden med adresser.

Distribuera text

Detta sätt att formatera texten används i både tid och otid. En hel del artiklar skrivs med denna stil. Det ger ett kantigt utseende på texten i sin helhet. Texten bibehåller sin ursprungliga vänsterjustering men drabbas av en samtidig högerjustering om där är tillräckligt med text för att nå högerkanten. Detta uppnås genom att mellanrummen förlängs och i vissa fall förkortas för att rymma alla ord. Bokstäverna i orden behåller sin storlek.

Det diskuteras i omgångar om detta ökar eller minskar läsbarheten. Själv upplever jag att det försvårar läsningen då det händer att mellanrummen kan bli olyckligt formade på ett vis så att ögonen kan luras att hoppa upp eller ner en rad under läsningens gång. Onekligen ser det elegant ut med att texten når fullt ut i höger kant så det är klart ett smakfullt uttryck men med bekostnad utav läsbarheten.

Kantjustera text

Centreringen sker i förhållande till dokumentets kanter och det är likadant med de andra formateringarna. Textformateringar är ett generellt begrepp som spänner över flertalet typografiska termer.

Om du kan se en linjal i dokumentet så kan du se vart dokumentets kanter för text är. Från linjalen kan du göra kantjusteringar. Det möjliggör att du kan faktiskt flytta vart centreringen är på dokumentets skrivyta om du flyttar kanterna.

Marginaljustera text

Marginaljustering kallar jag de ytor runt om texten. Marginalerna kan även handla om att justera höjd. Jag tänkte främst på de fall då du använder två kolumner och då behöver justera marginalerna mellan

Inledande indrag

Det finns en tradition av att för läsbarheten eller komprimera texten något så kan du inleda nya stycken med att ha ett indrag. De fall då du vill ha indrag i din text så ska tänka på att hålla dig till den stilen så att det blir lätt för läsaren att följa med.

Dela google dokument

Det du oftast vill är att dela en länk till personer som ska läsa innehållet i dina dokument. Då trycker du på ”Dela” och sedan ”Hämta delbar länk”.

I de fall du vill bjuda in till att skriva med dig så ska du i ”Dela med andra”-menyn välja alternativet ”Alla med länken får redigera”.

Efter att du har valt delningsalternativ så kan du då kopiera länken och skicka den till de som du vill ska läsa eller skriva i ditt dokument.

Skiljetecken och mellanrum

Tänk på hur skiljetecken skrivs. Skiljetecken är punkt, kolon, talstreck, kommatecken. Skiljetecknet följs av ett mellanrum.

Ett lättare sätt att åtgärda detta på är att söka och ersätta alla förekomster av skiljetecknet som kommer efter ett mellanrum.

C-h (hitta) för att söka i google dokument. Om din google är på tangentbordskombinationen C-f (find).

Sök och ersätt

  1. Mellanslag punkt och ersätt med punkt mellanslag.
  2. Mellanslag kolon och ersätt med kolon mellanslag.
  3. Mellanslag talstreck och ersätt med talstreck mellanslag.
  4. Mellanslag kommatecken och ersätt med kommatecken mellanslag.
  5. Avsluta med att söka och ersätta mellanslag mellanslag med mellanslag.

Detta ser såklart lite annorlunda ut i själva sökfälten då du skriver tecknet istället för ordet vilket kommer att se ut som nedan. Jag har lagt in citationstecken för att det ska bli tydligare att se på vilken sida av skiljetecknen som mellanrummet är på.

  1. Sök ” .” och ersätt med ”. ”
  2. Sök ” ,” och ersätt med ”, ”
  3. Sök ” -” och ersätt med ”- ”
  4. Sök ” ,” och ersätt med ”, ”
  5. Sök ” ” och ersätt med ” ”

Med tiden lär du dig att skriva på rätt sätt. Denna metoden ovan kan du använda för att se till att få rätt på det varje gång.


Klippa film med chromebooks

Det senaste som tillkommit Chromebooks nu är en terminal som du kommer åt som ”beta”. Det finns flera terminaler redan i Chromebooksen men detta är det senaste integrerade och som verkar mest fullständigt.

Det som är unikt är att pakethanteraren här fungerar relativt bra och erbjuder att installera flera program för att kunna klippa film.

Pakethanteraren heter apt vilket jag antar är en variant av Debians apt-get anpassad för chromebooks. Den fungerar som vanligt.

$ sudo apt install openshot

sudo betyder super user do. Superanvändare betyder att du är administratör för datorn och det behövs för tillfällen som dessa då du ska installera mjukvara.

apt är pakethanteraren som tillhandahåller ett register av program som den kan hjälpa dig att installera på datorn.

install är engelsk stavning på för att installera. Detta är det kommandot du säger till apt att utföra. Andra komandon du kan göra är remove vilket är att ta bort.

openshot är ett av klippprogrammen som jag diskuterar här. Genom att skriva dess namn så kommer apt att installera det på datorn. Apt hjälper även till med att installera de paket som programmet är beroende utav för att fungera.

För att kunna nå filmklipp behöver du ladda över dem till det som heter Linux-filer i programmet Filer.

Openshot

Precis helt rätt produkt. Openshot är en perfekt balans mellan professionell klippmjukvara och superenkel mjukvara.

Openshot saknar stöd för filformatet mkv direkt. Det var ju tråkigt. Just nu hinner jag inte söka vidare på hur det är möjligt att öppna mkv filer. Ett alternativ är att använda vlc eller kdenlive för att spara om filmen i ett bättre lämpat filformat.

Det finns en funktion för att ladda upp filmer direkt till youtube från programmet. Jag har ännu inte kunna testa funktionen men det känns smidigt.

Kdenlive

Detta program är en klassiker som är känt för att stötta alla möjliga märkliga filmformat. Vilket rimligtvis är bra när det kan hända att filmerna kan ha filmats med mobiltelefon.

Program som kdnlive gav som rekemnedation att instalera beroenden. Breeze-icon-theme, vlc/xine.

Fliformat

Den chormebook jag använder skapar mkv filer. Jag märkte när jag tittade igenom mkv filmen i vlc att komprimeringen var fruktansvärt destruktiv och innebar att det var svårt att få en klar bild inom rimlig tid. Det är sådant som påverkar klippandet negativt.

Lämna in uppgifter

Problemet är att itslearning använder en typ av google inloggning som för att ta emot inlämningar som kräver att filen du lämna in är sparat i rätt format och ligger i google drive.

Stegen för att lyckas är:

  1. Se till ge presentationen ett bra namn så att den är lätt att hitta.
  2. I presentationer laddar du ner ditt dokument till din dator. Som Microsoft PowerPoint .pptx (eller .odp).
  3. Flytta dokumentet ( .pptx filen) du nyss laddat ner från dina Nerladdnigar till Google Drive. Gärna på ett lämpligt ställe. Ett lämpligt ställe är exempelvis en mapp som heter digitalt-skapande och lägg dokumentet där.
  4. Gå till itslearning, hitta din uppgift, lämna in och ladda upp filen som du har laddat ner.

Såhär ser det ut.

docs/presentationer => chromebook => google drive => its learning.

Med bilder

Ladda ner som pptx
Öppna filhanteraren Filer
Flytta din hämtade fil från Mina filer/Nedladdningar till Google Drive/Min enhet/digitalt-skapande

Nu kan du i itslearning välja .pptx filen när du väljer att ladda upp filer med Google drive.

arduino klockbox med dc motor [skiss]

En klockbox är ett påhittat ord som jag hittade på en svensk nätbutik som säljer det som på engelska kallas för watch winder. En klockbox syfte är att hålla en automatisk klocka vid liv medan den andra klockan sitter på armen. Med en automatisk klocka så menar jag ett mekaniskt armbandsur som vrider upp sig självt genom kombinationen av jordens dragningskraft och dina armrörelser. Detta är såklart ett lyxproblem för om man kollar på film så pratar de om att de ärvt klockor från släktingar och vissa har haft dem i generationer. Tekniken för automatiska klockor har funnits länge (wikipedia: ”The Geneva Society of Arts, reporting on this watch in 1777, stated that 15 minutes walking was necessary to fully wind the watch.”) men armbandsur blev vanliga först efter första världskriget. Vilket ger att problemet jag har funnits i nästan 100 år för dem som har mer än en automatisk klocka vilket kanske inte var så vanligt förr.

Spola fram tiden till nuläget nästan 50 år efter de automatiska klockornas storhetstid, dagens konkurrens och teknikutvecklingen så är prisbilden en annan. Däremot så är priset på en klockbox högt i relation till vad en automatisk klocka kostar. Jag vill kombinera mitt problem med att lära mig mer om att programmera och bygga den med en arduino som hjärta.

Som tur är så är båda mina automatiska klockor utrustade med samma urverk nämligen miyota 9015. Jag hittade på en klockboxtillverkars hemsida att deras produkt skulle ställas till 800 varv medurs per dygn för att vrida upp ett sådant urverk.

Kollar specifikationen på miyotas hemsida (länk till specifikationen). Det viktigaste jag kan utläsa därifrån är att uret vrids upp medurs sett från klockans baksida. Klockan ska kunna hålla tiden i minst 42 timmar fullt uppvriden. Om man har mätutrustning ska man kunna mäta klockans hälsa genom att sätta klockan i fyra olika lägen och mäta precision med datum upp, 6 upp, 9 upp, 3 upp i 10-60 minuter. Det är lite svårt att mäta med datumet ner antar jag för att man inte kan se visarna.

Så nu börjar informationsinhämtningen för hur jag ska styra en motor till att göra detta. Jag vet redan nu att det är PWM ingångarna som gäller.

Jag tänker mig att det blir i slutändan en ATtiny85 som sitter och utför arbetet för att göra det hela för att allt som ska ske är att en motor ska snurra ett visst antal varv per dag. Då jag bara har en typ av urverk att vrida upp så förväntar jag mig att jag med tiden inte kommer behöva ställa om den när den väl fungerar väl. Något jag skulle tycka vore häftigt är om det skulle gå att driva den på uppladdningsbara batterier och ha en solcell. Sen har jag sett ett antal smarta ideer där man drar igång motorn till att bara vrida 180° sedan så lossnar på något sätt så släpper motorn greppet och klockan kan hänga fritt i en liten stund och dingla in ett par extra halvdana snurr innan motorn drar igång igen. Jag antar att det har med att man sätter dit ett kugghjul som har ett hål i sig och då kanske det handlar om att använda en servomotor istället för att stanna i läget där hålutrymmet är.

Spar material och tid innan 3D utskriften

Tänkte gå igenom ett antal strategier för att kunna skriva ut med 3D skrivare med så lite material som möjligt. Dessutom när man skriver ut med mindre material så tar utskrifterna väsentligt mindre tid.

Vinklar och stödmaterial

Om man ställer en komplicerad figur på sniskan. 30 till 45 graders lutning beroende på skrivare så kommer knappt något stödmaterial att behövas. Det går att göra det ännu effektivare genom att från början eller i efterhand åstadkomma dessa vinklar överallt där det finns överhängande former som annars skulle behöva stöd om de var raka. Vissa vinklar kräver en del precision och tanke för att lösa. Det blir övervägande alltid snyggare att skriva ut modeller som inte kräver stödmaterial. Jag syftar då på minskat efterarbete med att fila och dölja stödmaterialens artifakter.

Tjocklek

Hur tjock, ifyllt och så vidare behöver modellen ejentligen vara? Svaret på det är beroende av de fysiska kraven på modellen efteråt. Så smalt som möjligt eller iallafall så smalt du vågar/kan gå. Det finns olika sätt att arbeta med detta.

I moderna slicers kan du justera ifyllnadsgrad och mönster. Men äldre skrivare/slicers har inte dessa funktioner så då får du göra ett större arbete själv.

Dela upp för att skruva/limma efter

Ibland är det omöjligt att få bra vinklar från alla håll. Plocka då isär modellen, gör hål, släta ytor för att kunna bygga ihop modellen efter att utskriften är klar. Det är exempelvis fördelaktigt för vissa runda former att skrivas ut raka istället för snea och då kan man göra det vid sidan av. Tänk på att hålen behöver vara ungefär 2% (eller ~0.6mm) större än delen som ska ner i hålet för annars kommer du få fila och slipa ner båda ytorna. Det är ett precisionsarbete som skrivaren ofta fixar bättre än du själv med mejsel, fil och sandpapper.

Placera på och inuti

Ibland tar utskrifter upp hela 3D skrivarbädden. Då kan det vara på sin plats att skriva ut delar inne/på befintliga objekt. På så vis kan de dela (eller vara en del av) det stödmaterial om sådant behövs. Använda hela bädden mer effektivt genom att öka antalet utskrivna delar istället för att göra flera utskrifter efter varandra vilket kräver mer tid och uppmärksamhet från dig.

Mindre basplatta

Själva basplattan under utskriften är på flera skrivare påtvingad och då kan du placera varje objekt lagom tätt så att de delar basplatta istället för att ha sin helt egna.

Börja att samarbeta med git

Git är ett enkelt sätt att dela kod med varandra. Många använder github.com och det är en bra plattform att utgå ifrån.

Git kommandon som är vanliga att använda är clone, status, fetch, add, push, checkout och pull.

Få tag i någon annans kod

Det finns flera sätt att tänka på när du vill interagera med någon annans kod. Ska du bara testa. Det första är att klona deras arbete till din dator och göra din egen gren. Däremot om du förväntar dig att du kommer att göra förändringar som du ska skicka till den personen i ett senare skede så är metodiken annorlunda.


git status

git fetch

git add

git push

git checkout

git pull


ATtiny, flerfärgsled & 3D utskrift [avslutad]

Jag får anledning till att behöva visa en kombination av 3D utskrifter och ATtiny85 samt att lära mig kontinuerlig förändring på tre ben samtidigt (i en dator simuleing så slocknade lampan).

Den blev fantastisk med synligt bikupemönster i den öppna skallen, resistorerna till lampan som tarmar på utsidan. Lampan byter förtrollande kontinuerligt färg. Lätt att byta batteri och peta loss ATtinyn för programmera om.

Iden med med detta från början var att göra en jultomte som höll i ett ljus samt var utrustad med lite teknik. Det var november 2017. Utskriften misslyckas halvvägs genom huvudet. Där en peizo skulle sitta är nu batteriet och jag tror att det skulle vara ett 555 chip. Så det blev ett helt annat bygge i slutändan.

Läs och förstå arduino kod

Som alla andra språk så behövs övning och det bästa sättet att lära sig är att prata med en urinvånare. Nu är mikrodatorer inte så pratsamma i början men det kommer. Jag kommer att gå igenom ett antal vanliga arduino program som du har stött på eller kommer att stöta på och stega igenom dem så grundligt jag kan. Kontakta mig ifall det är mer jag behöver gå igenom.

Läsa och förstå blink

Det absolut första programmet de flesta stöter på är ett blink  program (arduinos variant).

 

/*
Blink

Turns an LED on for one second, then off for one second, repeatedly.

Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
 it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
 the correct LED pin independent of which board is used.
 If you want to know what pin the on-board LED is connected to on your Arduino
 model, check the Technical Specs of your board at:
 https://www.arduino.cc/en/Main/Products

 modified 8 May 2014 by Scott Fitzgerald
 modified 2 Sep 2016 by Arturo Guadalupi
 modified 8 Sep 2016 by Colby Newman

This example code is in the public domain.
 http://www.arduino.cc/en/Tutorial/Blink
*/

// the setup function runs once when you press reset or power the board
 void setup() {
 // initialize digital pin LED_BUILTIN as an output.
    pinMode(LED_BUILTIN, OUTPUT);
 }

// the loop function runs over and over again forever
 void loop() {
    digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
    delay(1000);                       // wait for a second
    digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
    delay(1000);                       // wait for a second
 }

Språket c

Språket som används för att programmera arduino är c och ibland brukar jag skriva en variant av det då språket genomgår förändringar och det är valfritt att välja att gå vidare med exempelvis de förändringar som skett de senaste åren.

Vanligast nuförtiden är att utgå ifrån någon av C89/C90, C99 and C11. Siffrorna efter C står för årtiondet då specifikationen skrevs (C11 = 2011, C99 = 1999) så det är inget språk i förändring precis vars versioner kommer i nya betydande förändringar vart 10 år. Andra yngre språk som javascript förändras någorlunda radikalt varje år. Python är ett språk som börjat att lugna ner sig i stil med C.

Språket c i sig är bara ett språk. Språket saknar de bibliotek som behövs för att kunna skapa arduinospecifik kod. Biblioteken innehåller kod som ger språket vi använder specialord som underlättar att använda arudinon. Det är öppen källkod så om du vill så kan du delta i att förbättra biblioteken. Ofta är det rätt mastig kod men du lär dig massor om du skulle våga dig på att läsa det senare i livet.

Skrivnormer i programmering

Programmering är dialektalt och det finns massor av skrivna och oskrivna regler. Vilket betyder att när du läser kod så kommer det att se olika ut beroende på vem som skriver koden och vad de har för bakgrund eller pratar för andra språk. Oftast försöker man att skriva på engelska även om det absolut inte spelar någon roll för mikrodatorn vad variabler och funktioner kallas för (så länge du minns dem och de som läser förstår vad du mer).

När det gäller namngivning av variabelord, funktioner och så vidare så måste de skrivs utan mellanslag. Sätter du mellanslag i variabeldeklarationen tror kompileraren att du just skrivit två variabler efter varandra. I blinkprogrammet så kan du hitta:

  • digitalWrite()
  • pinMode()
  • LED_BUILTIN

Konventionen de första två kallas för camelCase vilket är vanligast att använda idag. Med camelCase skrivs första ordet med gemen sen därefter efterföljande ord inleds med versaler och då blir det som kamelryggar. Ibland så kommer du att stöta på en äldre konvention som ser ut som LED_BUILTIN men i så fall är det förhistoriska funktioner då de flesta av dem skrevs enligt skrönan att det inte fanns versaler och gemener representerade i datorer på den tiden.

Enkelradskommentarer // och flerradskommentarer /* */

Hela programmet börjar med en introduktionstext som bara är till för dig, dina medförfattare och kommer aldrig att läsas av datorn. Det är nämligen så att kommentarer skalas bort när du kompilerar koden till maskinkod.

Det vanliga förhållningssättet är att introducera programmet med en titel, en ide av vad det ska göra, vem du är och rättigheter. Det är de som du ser i flerraders kommentarerna som börjar med /* och slutar med */.

Det finns också en del enradskommentarer som är den text som följer efter två snedstreck på detta viset: //. Vi kan studera två varianter ifrån programmet.

// the loop function runs over and over again forever
void loop() {
    digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)

När du skriver kod själv så är det alltid rekommenderat att du skriver enkelradskommentarer med vad du förväntar dig att koden nedan ska åstadkomma ungefär som en rubrik. Sen för minnet så kan du efter ditt kommando skriva resultatet av vad raden gör precis som de gjort i kommentaren efter digitalWrite.

Så tar vi bort alla kommentarer så blir programmet bara några rader långt.

void setup() {
     pinMode(LED_BUILTIN, OUTPUT);
 }

void loop() {
     digitalWrite(LED_BUILTIN, HIGH);
     delay(1000);
     digitalWrite(LED_BUILTIN, LOW);
     delay(1000);
 }

Kommentarer är fruktansvärt behändiga i att studera och felsöka din kod. Ibland skriver du något som datorn inte förstår och då får du formulera om dig. Istället för att ta bort det som du just har ägnat en massa tid på att tänka ut så kan du kommentera bort det enkelt med att kommentera ut din kod som inte fungerar.

Funktionerna setup() och loop()

Om du studerar det som är kvar nu så är där två så kallade funktioner kvar med ett antal instruktioner. Du kan se att de är funktioner genom att de börjar med ordet void. Void är ett speciellt ord som ber kompileringen att vänta med att köra innehållet till det att funktionsnamnet kallas. Skriver ett hypotetiskt exempel:

// sätt en led på ett visst portnummer till high
void lampOn(int ledOnIOnumber) {
     digitalWrite(ledOnIOnumber, HIGH);
 }
 lampOn(13);
 lampOn(4);

lampOn() är en liten funktion som slår på en ledlampa på en viss siffra precis som i binkprogramets loop() finns en antal digitalWrite() men tänk om du ska slå på en hel massa ledlampor då kanske du vill skriva mindre och låta koden jobba åt dig. 

Du kommer att stöta på i framtiden att alla funktioner behöver köras precis som funktionen lampOn() här ovan. Med att köra menar jag att du skriver funktionens namn följt av ett kör (;). I koden så slår den på LEDs som är anslutna på 13 och 4. Smidigheten med detta är just det att funktionen kan användas flera gånger.

Nu kommer du kanske att tänka på något verkar udda med setup() och loop() om du tittar på exemplet ovan. Det har du rätt i för att setup() och loop() är specifikt utvalda för att skriva viss typ av arduinokod och körs alltid minst en gång oavsätt om du kör dem eller inte.

Av någon konstig anledning så ser det inte ut som att dessa gör det. Med att de inte verkar köras så är det för att en rad där det står setup(); eller loop(); och så är det för att underlätta att du kommer in i det som är viktigt.

Nu har ju tyvärr inte blink någon annan funktion som vi kan titta närmare på för att blinkprogrammet det är det absolut minsta programmet som du kommer att ha att göra med. Så det blir lite märkligt att just dessa beter sig annorlunda än alla andra funktioner. Men vi kan gräva vidare med vad vi har.

Funktionens objekt

Om du undrar vad måsvingarna {} är för för något så kallas de för objekt. Objekten är grundstenen i programmeringsspråket och skulle kunna ägnas väldigt mycket fokus på men jag ska försöka att hålla det till det väsentligaste.

Så om vi tar det med void setup() { så börjar objektet här och så avslutas det med den andra måsvingen }. Det är ett fantastiskt verktyg för att avgränsa innehållet i koden. Tittar du noga på koden så kommer du att se en viss indentering i början av raden då ett objekt börjar och ju högre i hierarkin som koden går desto större blir indenteringen. Vanligen är indenteringen fyra mellanslag eller en tab. Då tab används till en hel del annat i navigering av gränssnitt så har det sakta börjat att tyna bort samt en latare variant med bara två mellanslag börjat att komma fram.

void lampTwoOff() {
    // dubbelkolla att inte lampan redan är avstängd först
    if ( digitalRead(2) == HIGH ){
        // stäng av lampan
        digitalWrite(2, LOW);
    }
}

Ungefär som ovan kan det då se ut. Normalt så kan det bli ett antal fler nivåer. När det börjar bli ohållbart många (mer är sju tycker jag själv är helt oläsligt) så är det dags att bryta loss koden och skriva nya funktioner för att underlätta läsbarheten av koden.

Variabler, int och andra datatyper

Nu använder detta blinkprogramet en specialare i koden som ni kan läsa er till nämligen LED_BUILTIN. Det som döljer sig är en specialfunktion som själv listar ut beroende på vad kompileringen vet om din specifika hårdvara. I arduino uno och liknande så sitter det en inbyggd led på pin 13. C är ett så kallat typat språk vilket innebär att du behöver specificera vad det är för typ av innehåll som du kommer att fylla dina variabler med. Den allra vanligaste variabeltypen du kommer att hantera är int. int är kort för integer och står för ett 16-bitars heltal. Vilket betyder att det största talet är (2^15) -1 = 32767 och lika långt negativt. Ska du ha större tal så får du använda 32 bitars typen long.

Det är en strikt datamodell vilket innebär att du ska lagra rätt innehåll till rätt typ. Du måste alltså lagra siffror i en int och bokstav i en char annars så blir kompileringen ledsen. Med tiden kommer du att bli bekant och arbeta med flertalet andra datatyper. Om jag minns rätt så finns det ett trettiotal olika typer. Jag raddar upp några här som en lista och så får du lära känna dem på egen hand allt eftersom du behöver dem:

float, double, short, unsigned short, long, unsigned long, int[3]
char, unsigned char

Nu kommer den spännande biten för att precis som med funktioner så får du lov att kalla dina dataobjekt precis vad du vill så länge som de bara innehåller bokstäver och _ understreck. Om du minns exempelkoden jag skrev för att beskriva en funktion vars första rad såg ut såhär

void lampOn(int ledOnIOnumber) {

Så skapade jag en variabel där när jag skrev: int ledOnIOnumber. Nu vet du att en int normalt sett är ett tal mellan -32767 och 32767. Vilket är mer än väl lagom rymd för att skriva de få heltalen på en arduinos digitala ingångar som sträcker sig från 0 till 13. Nu kanske inte ledOnIOnumber var det tillsynes lättaste namnet att namnge sin variabel till.

Vänster och höger om likhetstecken

Återigen så avsaknad detta programmet likhetstecken men i alla extra exempel så har jag använt dem. Det fungerar som i matematiken.

int a = 1;

Grön till vänster och röd till höger. Det är nämligen så att det på den vänstra sidan skickas in till vänster. Du läser alltså från höger till vänster. Studera detta nedan.

int a = 2;
int b = 3;
a = b; // a blir då 3

Lägg märke till att du behöver bara skapa variabeln en gång. Gör du det två gånger så kommer kompileringen att bli ledsen.

Arduinos egna ordlista

Nu är du rustad så gott det går här och får läsa mer på egen hand. När du använder arduino IDE för att kompilera koden till maskinkod så använder du c i kombination med arduinos egna bibliotek. Det döljer sig en hel del kod bakom varje ord som är specifikt för arduino. Ett bibliotek är en samling av funktioner som är skrivna för de allra vanligaste metoderna att jobba mot exempelvis arduinot. Det första som man bör göra för att förstå ett bibliotek är att att studera vad det finns för ord. Genom att förstå dessa orden kan du göra precis allt utan att skriva avancerad kod. Det finns utförliga beskrivningar av allt som biblioteket innehåller på arduinos hemsida. Besök Language Reference documentation redan nu.

 

 

3D utskriven cykeldel

Det bästa med 3D skrivare är att skapa delar som kompletterar, länkar eller förbättrar en produkt. Problemet jag fick med min cykel var att den var inte byggd för att ha just den cykelkorgsdesignen som den fick. Resultatet blev att en bricka ligger löst ovanpå cykelkorgsarmen och skramlar vid minsta lilla ojämnhet i vägunderlaget. Iden var att skapa en passform som sitter runt framgaffelns hals och håller brickan jämn med resten av cykelkorgsinfattningen.

tinkercad som verktyg

Jag började först i Freecad för att jag tänkte att det skulle vara ypperligt att få öva på den mjukvaran. Men så kom det sig att vi troligen inte kommer att lämna tinkercad denna terminen heller till följd av att tinkecad har blivit bättre med circuits vilket vi på komtek kommer att undervisa i arduino med. Alltså blir det lättare för elever och lärare att ha en och samma plattform. Visst är det ett trubbigt verktyg för att man inte kan arbeta med linjer men det har sin tjusning i att det är helt säkert alltid att det man gör resulterar i en solid.

Metoderna bakom

Det finns inga lager i tinkercad så man får jobba smart. Däremot så har möjligheten att gömma objekt kommit vilket är till stor hjälp. Det blir lagom komplext efter ett tag och det gäller att tänka sig för. Jag kommer här presentera ett antal metoder som jag försöker beskriva så gott jag kan så att de blir användbara för dig.

Jag ska göra så gott jag kan för att vara konsekvent med att skriva vad jag menar när jag går igenom hur de olika kommandona fungerar och hur du utnyttjar dem bäst. Jag använder noteringstypen C, S, M som står för Ctrl, Shift och Meta (Alt). Tangenterna fn, Option (win/kringla) används inte så vitt jag vet.

  • Göm (Hide Selected): C-h
  • Ogöm alla (Show all): C-S-h
  • Gruppera (Group): C-g
  • Avgruppera (Ungroup): C-S-g
  • Gå in i en grupp: Dubbelklicka
  • Lås (Lock editing): C-l
  • Lås upp (Unlock editing): C-l

 

Bilderna visar vart de olika knapparna finns i gränssnittet. Direkt i den stora panelen finns visa och göm knapparna. I den lilla svävande panelen Shape finns knapparna för att gömma och låsa.

Arbeta med runda former

Standard är att cylindrar och cirklar har få sidor. Det är såklart för att spara prestanda och det spelar för det mesta ingen roll. Däremot nu när 3D utskriften ska sitta jämt mot en rund yta så är det viktigt att formerna är så runda som möjligt. I shape panelen går det att ändra på antalet sidor (Sides) där max är 64 vilket jag fick sätta på vartenda en av de former jag jobbade med.

 

Centrering till rätt mittpunkt

Om du centrerar två objekt så kommer de i grundutförandet att gå till den punkt som är mitt emellan de två vilket inte är mitten av något utav dem. Sen så kan det vara känsligt med att flytta ett visst objekt för att flera andra objekt kan vara beroende av hur de är ställda i förhållande till ett visst objekt. Denna designen använde 28 objekt vilket innebär att om mitten på två objekt flyttas sås kommer 26 andra objekt att behövas flyttas om så det är kritiskt att behålla ett huvudobjekt att förhålla sig till.

För att välja vilken mitt den ska gå till så börja med att justera det mindre objektet till det större objektets kant för att i nästa steg centrera så behåller den stora sin position på arbetsbordet.

l-align
markera båda objekten och aktivera justeringsverktyget (l)

l-align-stora
ställ emot kanten på det större objektet genom att klicka på det stora objektets justeringsprick

l-align-stora-centrera
centrera med mittenpricken

Såklart så kan du låsa det ena objektet men centreringen fungerar inte då vilket är tråkigt. Jag har ännu inte sett något sett att rapportera förslag på förbättringar men att centrera mot ett låst objekt skulle såklart vara på den listan tycker jag.

Flytta arbetsbordet regelbundet

Arbetsbordet går att flytta mot olika ytor och det är väldigt praktiskt särskilt om man ska komma åt att justera former och centreringar i alla ledder. Tänk på att när du drar in workbenchen på ett objekt så kan det inte läggas på ett hålobjekt så du behöver gå över till solid för det objektet. Här är bilder som illustrerar hur jag gör för att lägga arbetsbordets axlar för att komma åt att anpassa skurvhålscylindrarnas omkrets.

problem-rityta-transparant
Problem att fästa mot hål

problem-rityta-otransparant
Arbetsbänken fäster mot botten som tänkt

Prototyperna och den slutgiltiga utskriften

Det blev tre utskrifter. Prototyp ett var för liten. Jag hade dock lyckats att göra något som jag inte kunde återskapa senare och det var själva låsmekanismen. Ur ena halvan sticker det ut fyra stift som går igenom hela den andra halvan. De satt oväntat bra fast.

Två för stor.

Tre sitter utskriften perfekt efter ett tags filande.

Lycka till med din produktion av 3D utskrivna reservdelar mm.

Hitta katten Viktor [prototyp 2]

Jag har skrivit om beskrivning av iden skrev jag hade av katthittaren i en tweet. ”I’m gonna build something for my cat so that I can find it quicker. Grabbing GPS position, sending it through radio and have another device for me to compare GPS distance on screen.”

Detta ska vara ett levande dokument som jag kommer att uppdatera allt eftersom att jag kommer längre med projektet.

Katthittaren

Problemet jag löser är att den ena av mina katter väljer att döva sina öron och bege sig på äventyr utomhus samt bestämma själv när det lämpar sig att komma tillbaka. Jag har vid några tillfällen lånat ut min gps klocka till katten så jag vet att radien som katten rör sig är upp till några hundra meter hemifrån och brukar komma tillbaka hemåt oftast en gång i halvtimmen för att kolla läget för att sedan bege sig längre bort.

Katthittare med arduino, gps och radio

2x arduinos av mindre format
2x radio things
2x gps things

Första iden med aruduno feather

Lagt denna iden åt sidan för att det kommer inte att fungera särskilt bra för att wifi är för dåligt räckvidsmässigt då katten rör sig på mycket längre avstånd. Radio är att föredra. Jag har ännu inga radioenheter. Feathern fungerar säkerligen utmärkt att använda men jag kommer att få koppla till någon radioantenn i så fall.

Spåra en katt från telefonen.

Ansluten till feathern

Testar komandon via screen.

screen /dev/ttyUSB0 9600

screen -ls

print(wifi)
romtable: 4023d018

Feathern

Text på enheten

ESP8226mod
AI-THINKER
ISM 2.4GHz
PA +25dBm
802.11b/g/n

På adafruits sida om feather produkten finns det lite mer info.

Hittat en radiofunktion som kör med en attiny:

http://www.instructables.com/id/Mini-weather-station-with-Attiny85/

Arduino Adafruit Gemma Utvecklingsmiljöer

Att hitta en vettig utvecklingsmiljö är viktigt för att kunna felsöka och få bra hjälp genom automatisk komplettering av programmeringsspråkets specifika termer.

Kollar igen efter en annan texteditor för att skriva till arduino kretsar. Att leva utan automatisk komplettering känns b vilket är vad Arduino IDE erbjuder så jag kollar efter andra möjligheter. Arduino har samlat en lista på sin hemsida. https://playground.arduino.cc/Main/DevelopmentTools

Visual Studio Code Extension for Arduino

Hade VS code installerat för att jag gjorde något javascriptigt tidigare. Det var lätt. I extentionsmenyn hittar jag Arduino och PlatformIO (vilket jag sett marknadsföras på arduinos hemsida). Den hittar rätt kort och så kan jag välja port vilket verkar fungera för att jag får ingen felkod när jag väljer rätt COM port.

Problem

Har inte ännu listat ut hur jag ska skicka över sketcherna. När jag kör det kommandot i körfältet så får jag inte någon respons på att det har skickats över. Har alltså inte lyckats att få sketcherna att komma över till kretsen vilket gör det meningslöst. Testade även PlatformIO och har samma problem där med att kortet verkar identifierat men gör ingen ansträngning för att skicka över koden.

Jag låter det vara och går över till nästa. Det finns säkert någon som har skrivit ner hur man gör men jag har inte hittat något just nu i skrivande stund.

Andra evaluering

Har testat lite till och kommit fram till att jag överger iden att använda vs code. Kom så långt att skriva de konfigurationsfilerna som vs code vill ha och sedan få felmeddelanden om saker som jag inte väntat mig.

Maria Mole

En öppen källkods utvecklingsmiljö som jag har använt för något år sedan när jag gick igenom hela Arduino boken som följer med basc kittet som arduino säljer. Jag minns att mariamole var trevlig. Deras hemsida är http://dalpix.com/mariamole. De finns på github och sourceforge.

Problem

Kan inte välja rätt kort. Försöker komma på hur jag ska få in GEMMA som ett alternativ. Borde såklart förstå hur man gör för att lägga till de hårvaruspecifikationerna genom att länka in det i byggfilen eller komandot som körs. Har ännu inte stött på hur man gör detta men det är en viktig del i att välja en annan editor särskilt om jag ska kunna växla till vilken som helst.

Jag är nu alltså ett steg längre ifrån ett funktionellt IDE än vad jag kom till med VS code. Just nu är alltså arduino IDE det enda som fungerar.

Sloeber: the Arduino Eclipse IDE

Verkar lovande då en laddar ner det som ett helt paket som innehåller allt och startar utan installation. Eclipse börjar som vanligt med att fylla på rejält med grejer under första uppstarten. Laddas ner här: http://eclipse.baeyens.it/stable.php?OS=Windows

Samma länk som jag fick lägga in i Arduino IDE som fanns beskriven på adafruits hemsida: https://adafruit.github.io/arduino-board-index/package_adafruit_index.json

Nu kan jag välja adafruits grejer. Kanske från den json filen kan jag utläsa vad jag behöver för att få igång Mariamole. I jasonen hittar jag att den länkar till denna filen: https://adafruit.github.io/arduino-board-index/boards/adafruit-avr-1.4.9.tar.bz2

Det här är besvärligt med att jag inte får igång adafruit produkterna. Jag gjorde samma sak fast med ett arduino uno med Soleber (eclipse) vilket fungerade direkt. Det är alltså dessa ”smarta” lösningar som adafruit har gjort med sina produkter som ställer till det för mig och gör processen långsammare. Målet är i och för sig att programmera ATtiny85 kretsar över arduino uno enheter. Vilket inte är en uppsätting enheter som jag har nu tillgång till just nu.

Testar att byta till Flora dvs ATmega32U4.

Fungerar fint med arduino uno. Nu har jag inte testat men jag ser de inställningarna i Sloeber på min linuxinstallation som inte syns i Windowsinstallationen var gång jag ska inleda ett nytt projekt. Det är märkligt.

UECIDE

Ännu en open source IDE dock så är den sedan tidigare obekant för mig. Ser komplett ut. Har ATmega32U4 men inte precis adafruit flora. Testar de andra varianterna. Det stora problemet generellt med flora är att alla deras guider baseras på Arduino IDE.

Det som liknade närmast med samma chip är https://store.arduino.cc/lilypad-arduino-usb

Men det fungerade inte. Vad besvärligt det är med adafurit gemma och flora.

Oj den var liten och portabel med full funktionalitet. Java baserad. Har lite olika varianter för attiny85.

MINIBLOQ

blockbaserad programmering http://blog.minibloq.org/p/download.html har stannat av för att de håller på med sin kickstarter http://www.codewithroot.com/

Atom med platformIO

PlatformIO är mycket bättre integrerat med atom än med VScode.

http://platformio.org/get-started/ide?install=atom

https://atom.io/

biicode

 

Programmera ATtiny85 via en arduino

etta är en guide för att föra över kod till attiny från start till slut med tankar kring processen.

Vad du behöver är en arduino, en ATtiny, sladdar, fyra LED lampor i olika färger, resistorer som passar respektive LED och en Kondensator 10uF (eller 100uF och har du inte det så finns det andra mer komplexa lösningar att läsa om här).

Målet är att få igång ett vanligt blinkprogram på ATtiny85. Detta känns som absolut standard för alla arduino program och det är där man börjar innan man ger sig på mer avancerade projekt.

Det finns väldigt mycket om denna enhet och samtidigt väldigt lite. Anledingen till att det finns lite är för att det är upp till dig att inse att du kan ta de flesta projekt och sedan krympa ner det till ATtiny85:s formfaktor. Dessutom så är inte denna ATtiny ensam härre på teppan för mindre styr enheter utan ett av många olika val. I vårt fall så har vi valt dett chip för att det har ett gott ryckte och att den har en låg kostnad (<10kr per enhet). Länk till tillverkaren produktblad http://www.microchip.com/wwwproducts/en/ATtiny85. Produktbladet som hör till fån samma sida (pdf 3,7 MB).

Här finns det att läsa det mesta om enheten. https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/ATtiny_x5.md

x5 pin mapping

1 Förbereda arduinon

Eftersom att ATtinyn saknar de delar för att prata med datorn så är den vanligaste metoden att använda en arduino som programmerare. Alternativt en specifik enhet som man kan köpa som passar exakt det chip som man tänker programmera. Denna typ av enhet kallas för ISP vilket är kort för In-System Programming.

1.1 installera arduino som isp

Ladda upp exempelprogrammet till arduinon. I de flesta android IDEna finns ett antal exempel varav ett av dem heter Android as ISP.

I mitt fall är det en arduino uno som kommer att agera isp som jag för över detta programmet till.

Ställ in arduino/genuino uno
Porten exempelvis COM17 (brukar stå vilken som gäller)
Programemrare AVRISP mkII

1.2 Koppla in så att du ser hur ISPn arbetar

Följ exempelprogrammets instruktioner med att sätta in pins. Det är nämligen så att det finns tre stycken lampor som man kan koppla in för att se hur det går för programmeringen. Jag har citerat där det står nedan:

/ Put an LED (with resistor) on the following pins:
 / 9: Heartbeat - shows the programmer is running
 / 8: Error - Lights up if something goes wrong (use red if that makes sense)
 / 7: Programming - In communication with the slave

Förklaring för vad detta innebär. Heartbeat är för att visa att rätt program är igång och det ser man genom att lampan pulserar. En av lamporna visar om det går fel i processen. Den sista visar när kretsen programmeras och blinkar medan överföringen till ATtinyn via arduinon sker.

Ett tips när du kopplar in led lamporna är att använda jorden bredvid pinsen. Denna jord på arduino kortet är markerad med GND och är mellan pinhål 13 och pinhålet med texten AREF. Det finns tre sammanlagt stycken GND på kortet. Vilket kortar ner i alla fall en sladd.

1.3 koppla sladdarna mellan ATtinyn och arduinon

För att ATtinyn ska kunna få program från datorn behöver den kopplas in på ett speciellt sätt till arduinon. Följ dessa anvisningarna och titta på fotot samt illustrationerna som vägledning.

Sätt en 10 uF (eller 100 uF) mellan GND och RESET.

Koppla sedan upp attinyn med sladdar till de olika ingångarna så här. Där jag har illustrerat med pilar (->)  från attinyn vart respektive pin ska kopplas till för ingång på arduinon.

ATMEL ATTINY85 -> ARDUINO

                  +-\/-+
         D 10 <- 1|    |8  -> 5V
                 2|    |7  -> D 13
                 3|    |6  -> D 12
          GND <- 4|    |5  -> D 11
                  +----+

High low tech har gjort en fin illustration (om du är nyfiken har de även gjort en guide som går att läsa här på highlowtech. Tyvärr verkar deras verksamhet ha upphört).

Nu ska attinyn vara redo för att ta emot mjkvara via arduinon.

2.1 Ställ in arduinos IDE inställnigar

Öppna inställningsfönstret och fyll i följande

Kryssa i medelanden under uppladdnig.
Sätt varningar till standard.

Klistrar du in denna länken till ATtiny drazzy ATTinyCore: http://drazzy.com/package_drazzy.com_index.json

arduinoIdePreferences

2.2 installera attiny

Gå in i boarddsmanager.
Sök på attiny och klicka installera.

boardsManager

2.2.1 Tips på vart man hittar länkar om ovan inte fungerar

På arduinos hemsida länkar de till en lista med dessa jason filer för alla enheter som de känner till som det finns stöd för. Tänk på att ATtiny85 kallas även x5 och tillhör utbudet ATtinyCore. Går man in i variants i biblioteket för attiny hittar man att David A. Mellis har skrivit det mesta för just ATtiny85 och daterats till 2007 men många har gjort förbättringar som inte någon har tagit cred för.

https://github.com/arduino/Arduino/wiki/Unofficial-list-of-3rd-party-boards-support-urls

I mina efterforskningar hittade jag att den som är verkar som nuvarande huvudutvecklare för ATtiny heter Spence Konde och kallar sig Dr Azzy. Spence underhåller ATtinyCore som är en heltäckande samling av alla de senaste biblioteken för alla attiny chip. Den senaste versionen av ATtinyCore i skrivande stund är 1.1.4.

2.2.2 Cosa är ett annat alternativ

Jag vet inte vad Cosa är fullt ut men det är en person som har gafflat Dr Azzys arbete och gjort sin egna grej (öppen källkod ger sådana möjligheter). Cosa beskrivs som följande på deras hemsida Cosa is an object-oriented platform for Arduino. Får kolla in det en annan gång. Denna Mikael som är huvudutvecklare av denna tolkare verkar ha jobbat på ericsson länge. Om det har någon betydelse.
https://github.com/mikaelpatel/Cosa

Cosa: https://raw.githubusercontent.com/mikaelpatel/Cosa/master/package_cosa_index.json

 

3 Bränna bootloader

Chippet är ifrån fabrik instruerat hastigheten till 1 Hz. Vilket inte gör så mycket tycker jag. Det verkar vara ett krav att ”bränna” om den. De flesta väljer 8 Hz.

3.1 Bränn bootloaderinställningar

Det finns otroligt många alternativ. I arduino IDE välj från menyn. Samt Man bränner till internal.

Board: ATtiny25/45/85
Timer 1 Clock: CPU
B.OD.: B.OD. Disabled
LTO (1.6.11+ only): Disabled
Chip: ATtiny85
Clock: 8 MHz (internal)
Port: COM17 (eller vad du har för något just nu)
Programmer: Arduino as ISP

När allt ser ut så klicka på Burn Bootloader för att ”bränna” inställningarna.

arduinoIdeTools

4 Nu kan du skicka över skisser

Exempelvis blinkaren. Tänk på att ändra i exemplet med blinkaren till en port som finns på kortet D0-D5. Så om det står internal eller 13 så byt det till en siffra mellan 0 och 5 (på bilden kör jag med 3).

5 Andra alternativ

Här kommer nu sådant jag har sammanställt vad var inställningsmöjlighet innebär. Inställningarna för bootloadern som jag angav tidigare är inte satt i sten om man vet vad man gör. Jag har en del kvar att reda ut för att förstå allt själv. Min förhoppning är att du har nytta av detta för att kunna själv fortsätta utreda vad som kan förbättras.

5.1 Speciella Funktioner

Board: ATtiny25/45/85

Inga konstigheter.

Timer 1 Clock: CPU

Möjliga val Val att göra:
64MHz
32MHz
CPU (verkar vettigt men jag vet ej varför)

B.OD.: B.OD. Disabled

Finns frya val
B.O.D. Enabled (2.7v)
B.O.D. Disabled
B.O.D. Enabled (4.3v)
B.O.D. Enabled (1.8v)

B. O. D. står för brown out detect vilket på svenska blir uppmärksamma uppbränning. Jag skulle tolka det som en brandvarnare men jag kan ha fel. Det är märkligt att detta är frånslaget som standard nu när det kanske skulle vara bra att ha det tillslaget på något av lägena. Jag översätter rakt av från en engelsk text detta:

Brown-out detection övervakar kontinuerligt Vcc och är kopplat till chippets reset state (BOR) om strömmen går under ett visst läge. Det är en god ide för långsamt stigande nätaggregat eller när det är förväntat att strömmen kan falla under den mängd energi som krävs för att driva chippet på den frekvens den är ställd till. Med BOD frånslaget kan det hänga chippet till det att chippet manuellt återställs. BOD ökar strömförbrukningen något vilket kan vara dåligt för lågenergilösningar.

Studerar en alternativen 1.8v, 2.7v, 4.3v så undrar jag på vilket ”håll” som detta tillstånd för att de skulle agera som voltgränserna skulle slå igång. Jag skulle anta att exempelvis om en väljer 1.8v så slår reset igång när strömmen faller till 1.8v. Tänker man på det så står det inte specifikt så det skulle kunna innebära att när Vcc strömmen faller med 1.8v så utlöses reset. Jag har sett flimer där enheten kan trimmas ner till mycket liten energiförbrukning, till 0.2v och 0.01v. I sådana lågenergifall skulle en reset inte slås på eller kanske slås på i onödan av att strömmen går under den punkten direkt efter att strömmen slås till om en exempelvis har ett 3.7v batteri. Detta behöver utredas.

LTO (1.6.11+ only): Disabled

Jag undrar om versionen gäller arduino IDE. Det skulle betyda att man väljer disabled när man använder använder eclipse/atom men det verkar konstigt.

Val:
Enabled
Disbabled

Chip: ATtiny85

Inga konstigheter

Clock: 8 MHz (internal)

Det är viktigt att välja internal för external i det här fallet är arduinon vilket blir en missmatchning som kan kanske orsaka att något går snett. Är det ett projekt som ska hålla tiden med watchdog så har jag sett att 16 Hz använts. Kan vara det här man ändrar om man har någon speciell kristall som jag läst om i förbifarten.

Internal:
8 MHz
1 MHz
16 MHz (PLL clock, x5, x61 only)

Det är konstigt att 20 MHz inte finns med men det står med i specifikationerna för kortet men det skulle kunna vara så att det kommer när väl någon har lyckats att skriva in det i biblioteket. För alla funktioner som är här kommer ju ATtinyCore.

Port: COM17 (eller vad du har för något just nu)

Välj den som passar bäst. På linux är det exempelvis oftast /dev/ttyACM0

Programmer: Arduino as ISP

Inga konstigheter

5.2 Hintar mumbo jumbo

I specifikationerna kan man läsa om stöd för en del andra funktioner. Men de är inte valbara vad jag kan se i menyerna. Dessutom så ligger de utanför mitt kunskapsområde. Jag har med dem för att om jag en dag förstår dem eller uppdaterar denna guide när biblioteken uppdaterats att innehålla dessa.

I2C i kombination med hårdvaru USI i Wire biblioteket. Oklart vad det är för något.

Stöd för SPI genom biblioteket. USI jobbar med DI/DO i mastermode. Fungerar tydligen ej med MISO/MOSI. Slavläge är DI MOSI och DO MISO. Undar om de har skrivit fel och DI samt DO är D 0 respektive D 1 pinsen.

Seriell support via mjukvara. Använd interrupts. TX är AIN0, RX är AIN1. Det står att en får tänka på att kommandot Serial.begin() gör dessa pins oanvändbara för annat. Dessutom ska man tänka på att det blir fel om man läser och skriver samtidigt vilket betyder att det är någon sorts envägskommunikation med mjukvaru seriell kommunikation (”the usual SoftwareSerial library” står det).

För att seriell mjukvarukommunikation ska fungera bra kan en behöva kalibrera den interna oscilatorn eller pll klockan (det finns sketcher för detta). Det har att göra med att klockan är kalibrerad till +/- 10% i de flesta fall medan seriell kommunikation bara fungerar med ett fåtals procents avvikelse.

6. Andra resurser om detta

Genomgående har jag refererat till ett antal andra som du kan gå tillbaka till och läsa mer i.

Vill du se film så rekomenderar jag denna: https://m.youtube.com/watch?v=c8andV3OWr8

Tre i rad med arduino adafruit [skiss]

Iden är att göra ett fyra i rad spel med pixellampor och tryckknappar. Samtidigt som jag går igenom hela processen av att genomföra projektet så kommer jag att dokumentera så mycket som möjligt för att göra någon typ av hänvisning för framtida projekt. I projektet har jag också till uppdrag att utreda vad det finns för utvecklingsmiljöer.

Hårdvaran som jag har att tillgå är en adafruit flora, en adafruit gemma, passande 3.7V 400mAh batteri och 3.7V batteriladdare. En adafruit neopixel ring, ett antal adafruit flora neopixel. Diverse tryckknappar, sladdar. Det är inte meningen att jag ska använda allt men det formade iden för vad jag kan göra.

Beskrivning av Tre i rad spelet

Spelarna ska kunna turas om att lägga och flytta sina pjäser till det att spelet är över.

När man har valt 3 stycken lampor var så börjar ett strategist spel där man flyttar från det ena till det andra. Man klickar då på platsen man vill flytta ifrån till den nya platsen. Till det att en spelare har fått tre i rad.

Spelaren vars tur det är ska dens lampor ska blinka. Det kan vara så att första brickan läggs ut slumpmässigt för att göra spelet intressantare.

När man flyttar en av sina lampor ska man klicka först på den som man ska flytta och sen på en tom plats på brädet. En ogiltig plats avbryter draget och spelaren får välja om.

Teoretiskt schema över spelet där 0 betyder tom, x är spelare 1 och y är spelare 2 (som har segrat).

0 x y
0 x y
x 0 y

Adafruit flora

Drivrutiner till windows hämtas på: https://github.com/adafruit/Adafruit_Windows_Drivers/archive/master.zip

https://learn.adafruit.com/adafruit-arduino-ide-setup/windows-setup

FRDM-KL46Z

Ansluta via USB

Det finns två mini-usb ingångar. En för ström antar jag och en för programmering.

Kopplar jag in den i datorn så monteras en disk med en html som länkar till: http://mbed.org/device/?code=022002038C09DE7771F523AF

Hittar hintar med information på nätet om att de lägger filer i den disken sedan så magiskt körs dessa kommandona.

Det är intressant för att chippet är gjort av hittar information på http://www.pemicro.com/products/products_find.cfm som är hjälpsam med att identifiera chippet. Det står NXP (former Freescale) vilket jag sett innan men det var skönt att läsa. Har hittat att man kan köpa dessa korten för ungefär 200kr om man kan få tag på dem i och med att tillverkaren blivit uppköpt.

Äntligen en guide

Illustrated Step-by-Step Instructions: Updating the Freescale Freedom Board Firmware

Fast den verkar oanvändbar. citerar which use a mbed bootloader which is different and does not allow to upate the bootloader. Vilket innebär att denna bootloadern är låst vilket är tråkigt att läsa. Men som tur är så har personen skrivit mer här: https://mcuoneclipse.com/2016/06/26/how-to-recover-the-opensda-v2-x-bootloader/

Schema för hur kortet ser ut

https://developer.mbed.org/platforms/FRDM-KL46Z/

Vad menar de med Arduino headers? Är den som en arduino sheild samtidigt som att det är ett kraftigare chip än en vanlig arduino?

Är uppdatering av kortet nödvändigt?

Eller jag ser att det finns länkar för att göra detta.

Jag gick med på att gå med i mbed hemsidan. Det är lite läskigt. Jag tänkte på den länken på kortet att den hade någon innebörd som gjorde kortet unikt det står ju ordagrant device och code i adressen. http://mbed.org/device/?code=022002038C09DE7771F523AF

Första gången jag öppnade html filen så trode jag att jag skulle möta en manual eller liknande inte att jag skulle skickas iväg utanför min dator och uppge att enheten är aktiv. De har ju säkert spårat mig fullt ut vad jag har för maskin, stad, webläsare och allt annat och kopplat det till enheten. Sjukt smart.

Tänk att den htmlfilen som ligger på varje kort är unikt identiferbart och registreras såklart när man klickar på det och krävs för att ladda ner mjukvaran. Detta är väldigt annorlunda från exempelvis arduino. Denna platformen är uppenbarligen skyddad på alla sätt.

arduino projekt 02 samt 03

Går igenom boken arduino projects book som följer med arduino starter kit igen. För något år sedan gjorde jag alla övningar (2015) och skrev en handledning till det femte projektet då. Jag tyckte att boken var bra för att den gick igenom var komponent.

Projektet ska föreställa en rymdskeppspanel. Genom att trycka eller hålla inne en knapp så ändras lamporna. Alla komponenter är kopplade separat från varandra på vars en digital ingång.

Konstigt nog så upplever jag att koden ger ett annat resultat än vad de skriver i boken. Det är säkert korrigerat i nyare böcker. Gröna lampan ska lysa i ursprungsläget och sen släckas samtidigt som de röda led-lamprona blinka om vartannat när man trycker på knappen.

int switchState = 0;

void setup() {
 pinMode(3, OUTPUT);
 pinMode(4, OUTPUT);
 pinMode(5, OUTPUT);
 pinMode(2, INPUT);
 
}

void loop() {
 switchState = digitalRead(2);

if (switchState == LOW) {
 digitalWrite(3, LOW);
 digitalWrite(4, HIGH);
 digitalWrite(5, HIGH);
 
 }

else {
 digitalWrite(3, HIGH);
 digitalWrite(4, LOW);
 digitalWrite(5, HIGH);

delay(250);

digitalWrite(4, HIGH);
 digitalWrite(5, LOW);

delay(400);
 }
}

Så ser min kod för att det ska fungera rätt. Något kanske växlar LOW och HIGH jämfört med hur boken är skriven. Jag har testat koden på två olika arduino Uno enheter och får rätt resultat var gång.

Samma sak gäller då projekt 04 att HIGH betyder att lampan är av. Koden jag skrev för projekt 04 loveMeter kanske inte kan användas rakt av. Jag har behållit lamporna på samma plats som i projekt 03 och därför ser koden annorlunda ut. Kolla in for loopen i koden och vart pinsen är deklarerade så syns det jämfört med boken.

const int sensorPin = A0;
const float baselineTemp = 20.0;
void setup() {
 Serial.begin(9600);
 for(int pinNumber = 3; pinNumber <6; pinNumber++){
 pinMode(pinNumber, OUTPUT);
 digitalWrite(pinNumber, HIGH); // HIGH släcker lampan
 }
}

void loop() {
 int sensorVal = analogRead(sensorPin);

Serial.print("Sensor Value: "); // + sensorVal);
 Serial.print(sensorVal);

float voltage = (sensorVal/1024.0) * 5.0;

Serial.print(", Volts: ");
 Serial.print(voltage);

Serial.print(", Degrees C: ");

float temperature = (voltage - .5) * 100;
 Serial.print(temperature);
 Serial.println();




if(temperature < baselineTemp){
 digitalWrite(3, HIGH);
 digitalWrite(4, HIGH);
 digitalWrite(5, HIGH);
 } else if(temperature >= baselineTemp+2 && temperature < baselineTemp+4){
 digitalWrite(3, HIGH);
 digitalWrite(4, HIGH);
 digitalWrite(5, LOW);
 } else if(temperature >= baselineTemp+4 && temperature < baselineTemp+6){
 digitalWrite(3, HIGH);
 digitalWrite(4, LOW);
 digitalWrite(5, LOW);
 } else if(temperature >= baselineTemp+6){
 digitalWrite(3, LOW);
 digitalWrite(4, LOW);
 digitalWrite(5, LOW);
 }
 delay(1);
}

Jag går mest igenom grejerna för att få en känsla för koden så jag har inte lagt någon energi på hur den ser ut. Det var lätt att ställa in serial monitorn i eclipse. Jag la också till en Serial.println(); för att få en ny rad istället för att avläsningsdatan springer oläsligt i sidled som den gör i boken istället för neråt. Det skulle utan tvekan gå att optimera koden till bara en Serial.println() istället för sju printsatser.

Lampan lyser för att temperaturen i rummet är tillräckligt hög (+22 grader C).

Replicator 2x slicer mjukvara

I åratal har jag hört att makerbots mjukvara är gammal. Jag gick in som jag brukar på alternativeto.net för att se alternativen. Märkligt nog så är inte makerbot desktop med bland mjukvarorna. Har de bett om att få ta bort sig? För jag minns att jag har sett dem där innan. Jag känner till cura. Cura har 5 alternativ som var open source. Bland dem MatterHackers (okänd för mig) och Slic3r (denna har jag hört mycket om).

Cura

Cura har inte replicator 2x som val från början. Hittade ett plugin på github (https://github.com/Ghostkeeper/X3GWriter) som föreslår att man använder Malyan M180 för att kunna exportera x3g filer vilket är det som replicator 2x använder. Känns b med ett plugin. Inställningarna kändes obekanta. Kan replicator 2x skriva ut med sådan noggrannhet? Det fanns 0.1mm och mindre. Brukar skriva ut med mycket större höjder. Skrivaren är sedan starten opålitlig så jag vill inte testa ens ifall det inte stämmer.

Får testa Cura en annan gång.  Eftersom att jag samtidigt laddat ner MatterHackers så gick jag över till att fortsätta den vägen. 

MatterHackers

Har replicator 2x direkt som val och den ser till att ladda ner behövda plugins och drivrutiner åt en i uppstarten efter att man har valt den skrivaren. Det verkade klart mer lovande än Cura. De drivrutiner som installerades räckte inte.

Så jag antar att MakerBot har låst ute all tredjeplats mjukvara och drivrutiner. Konstigt för en maskin som en gång i tiden hyllats för öppenhet. Det är inte första gången i världshistorien som det händer se exempelvis oculus och moov. 

MakerBot print

Installationen är ful. Programmet lägger sig i min användares katalog och jag kunde inget göra för att bestämma plats. Inga drivrutiner för replicator 2x (R2x)  installeras så jag avinstallerar. Det stämmer alltså att MakerBot har övergivit maskinen. Kollade på firmwire för R2x och det står att ingen aktiv utveckling sker vilket bekräftar det fullständigt.

MakerBot desktop

Programmet är undangömt på makerbots hemsida  längst nere i downloads bakom rubriken ”still looking for MakerBot desktop?”. Drivrutiner installeras i mängder och skrivaren hittas äntligen.

Tillbaka till MatterHackers

Programmet säger att porten är upptagen. Markerbot desktop identifierar skrivaren direkt via USB-kabeln. Kom på att det kan vara en tjänst. Öppnade aktivitetshanteraren vilket visade att det fanns ett program av Markerbot igång. Klickade in och ställde in tjänsten till att startas manuellt istället för automatiskt. Nu när jag startar MatterHackers programmet så står det ansluten alltså var det MakerBot tjänsten som snodde åt sig 3d skrivarens port.

Körde en av de tre testutskrifterna och det fungerade. Testutskriften var ett block och blev exakt som det ska vara med måtten 20*20*10 mm.

Det märkliga är att jag inte ser någon temperatur för plattan annars så ser programmet lovade ut. 

Slic3r

 

Förbered 3D-utskriften med Makerbot desktop

Makerbot desktop är en slicer. Det är alltså den mjukvaran som tar din 3D modell och översätter den till platta linjer som 3D-skrivaren förstår.

Det finns ett antal olika frågor du kan ställas inför när du öppnar en fil med Makerbot.

MBscale

Välj Scale to Fit. Detta är för att 3dmodellen är skalmässigt större än vad skrivaren kan skriva ut. Vi brukar skriva ut någonstans kring 50 mm stora föremål om du vill ha med dig utskriften hem samma dag annars så kan vi ordna det en annan dag. Detta fixar du till vänster.

MBscaleMenuSMBscaleMenuLiten

Jag drog ner storleken från 150 mm till närmare 50 mm och tyckte att det blev för litet för denna modellen. La till lite tjocklek och tyckte att det skulle bli lagom med att ha den som 27 mm bred.

Nu är det dags att välja skrivarinställningar. Tyvärr har makerbot lyckats att uppdatera sig olika mellan våra maskiner så det ser inte alltid likadant ut men principen är den samma och lika så funktionen.

I makerboten hittar du ett minneskort bakom luckan. Ta detta till din dator. Spara exporten till minneskortet.

Obs! Prata med lärarna så att det inte är några andra utskrifter på gång samtidigt som du vill skriva ut för då kommer vi ordna så att du få samsas med att skriva ut tillsammans med andra. Det ordnar vi men i annat fall så gör du det själv med dessa stegen. 

exportmenyn

Innan du trycker ut SD-kortet från datorn så dubbelkolla att Makerbot inte fortfarande håller på att göra 3d filen.

MBverify

Ett annat sätt att vara riktigt säker på att Makerbot programmet är färdigt är genom att ”mata ut” sd kortet. Tryck på den vitgråa usbkabelliknande ikonen med en grön cirkel och vit bock nere i aktivitetslisten nere till höger och välj – Mata ut.

mataUt.png

Gå till skrivaren och skriv ut.

Ska du skriva ut på den stora skrivaren sparar du en stl fil ifrån makerbot nu efter det att du har gjort alla inställningarna. Se till att du sparar i ascii stl formatet i din egna katalog på nätverket så att du kan hitta filen i datorn som är direkt kopplad till ”den stora” skrivaren (dimension).

MBstl.png

Sketchup till utskrift med makerbot

Nu har du gjort klart din modell i Sketchup och det är dags för utskrift. Vi använder makerbot som slicer för att vi har sådana skrivare. Detta är en så komplett manual som möjligt som ska gå att följa för att flytta över din 3D modell från sketchup till makerbot programvaran.

Sketchupfiler och Makerbot

Låt oss börja med att se hur kompatibla dessa programmen är med varandra. Om du vill så kan du följa denna delen eller läsa igenom det som kuriosa. Du lär dig i detta avsnitt ett sätt för att förstå hur du kan gå tillväga för att flytta dina flier mellan olika format. Samma metod kan du använda för att exempelvis lista ut hur du gör för att exportera en fil från Blender3D till TinkerCAD.

Börja med att öppna MakerBot Desktop-programmet från startmenyn eller skrivbordet. I makerbot öppna fönstret för att öppna en fil med Ctrl-o eller klicka i arkevmenyn på File -> Open.

makerbot

Här kan vi se att Makerbot kan öppna filformaten ”obj”, två olika typer av ”stl” samt filformatet ”thing”. Låt oss se om Sketchup kan producera något av dessa filformaten.

I Sketchups savemeny hittar vi bara ”skp” som är deras egna filformat. Vad vi kan läsa av vad makerbots öppningsmeny så finns det filformatet tyvärr inte bland de filtyper som makerbot kan öppna. Sketchup har faktiskt ett till ställe för att få ut filer. Detta är lite dolt. Andra filformat än skp hittar du under export. I arkivmenyn klicka dig fram File > Export > 3D Model… (se bild nedan).

suExpMenusuExpScreen

Här hittar vi då att Sketchup kan exportera till 3ds, dwg, dxf, dae, fbx, ifc, kmz, obj, wrl och xsi. Vilken tur vi har. Ett av formaten överensstämmer med varandra nämligen obj.

Då väljer vi det och exporterar. Se till att du gör det till din egna katalog på den gemensamma disken. I detta fallet kan du se att vi exporterar till Z:\2017-3D-design\Elias.

En ruta till dyker upp med extra information med endast godkänn som alternativ. Tryck på x eller ok. Nu kan du Alt-Tab till Makerbot förutsatt att du haft det öppet sedan tidigare och öppna den exporterade filen du just sparade i din egna katalog.

Sammanfatting

Exportera obj från sketchup till din mapp på den gemensamma disken och öppna filen med makerbot. Det finns en separat guide för att jobba med makerbot.

X i archlinux raspberry pi

Övning för att förstå vad en fönsterhanterar är för något

Iden med denna labben är att man ska få en raspberry pi att presentera ett grafiskt gränssnitt och ge en förståelse för fönsterhanterare. Labben ska ta ca 60 min att genomföra och kräver internet uppkoppling. Det finns diverse småkrångel som någon möter när de sätter sig in i nya system och det är spännande även om vi sällan idag utsätts för terminalen om vi inte själva vill. Men om man hamnar där så kan det vara bra att förstå hur man kommer vidare till de grafiska eller lär känna terminalen så att man känner sig trygg i den miljön också.

Starta upp Raspberryn och skärmen

Ta ut micro-SD kortet och för in det i Raspberryn.

Koppla in skärmen, tangentbord, strömadapter. Slå till strömen. Arch linux bootar. Vissa möss postar mitt i skärmen en gång per minut så jag burkar börja utan mus fram till det att man har ett fungerande fönsterhanteringsprogram.

  • Login as the default user alarm with the password alarm.
  • The default root password is root.

Förklara användaradministartion

root är den användare man kör med i början för att installera saker. Vi kommer att lägga in sudo i processen så att du kan hinner tänka efter vad det är du gör.

Ställa in svensk tangentbordsuppsättning

Tangetbordslaout är standard engelska vilket för det flesta är besvärligt då det inte står samma sak på knapparna som tangentbordet gör. Eller om man är van vid andra tangentbordsuppsättingar som dvorak-sv-a1. Låt oss börja med att lösa detta. Om vi söker på archlinux wiki så hittar vi:

localectl list-keymaps | grep -i search_term
localectl set-keymap --no-convert keymap

Med dessa inställningarna så kan vi direkt ändra vårt tangetbord men det är inte permanent. Så fort vi startar om så kommer det att återställa sig. Det är besvärligt att göra detta var gång därför ska vi göra ändringen permanent.

Konfigurationsfilen som terminalen startar upp med får du skapa själv och mata in det önskade värdet.

Vi kommer att göra det med VIM för att det är förinstallerat.

# vi /etc/vconsole.conf

i

KEYMAP=sv-lat6

ESC

:wq

Så när vi startar om senare med reboot (eller stänger av med ”shutdown -h now”) så kommer tangetbordet att vara svenska för all framtid som konfigurationsfilen är där.

Expandera disken till att använda hela utrymmet

by tomahhunt » Wed Jun 27, 2012 9:31 am

Actually you can resize the disk while active in arch linux.

As root:

fdisk /dev/mmcblk0

Delete the second partition /dev/mmcblk0p2
d
2

Create a new primary partition and use default sizes prompted. This will then create a partiton that fills the disk
n
p
2
enter
enter

Save and exit fdisk:
w


Now reboot. Once rebooted: 
resize2fs /dev/mmcblk0p2

Your main / partition should be the full size of the disk now.

Fantastiskt nu har disken 13 GB ledigt. Detta kommer att behövas för att rymma all mjukvara.

Kolla att internet fungerar

Testar att pinga någon adress som är kort och enkel att komma ihåg.

ping www.arla.se

Får jag svar så fungerar allt.

Tryck Ctrl-C (Ctrl förkortas ibland med ^ eller C) för att avbryta ping.

Installera x

Uppdatera pacmanlistan. Det kan ta tid att göra en full systemuppdatering så vi försöker att göra det vesentliga i ett kör även om det kanske inte är så rekomenderat att uppdatera källorna utan att uppdatera systemet samtidigt.

pacman -Sy
# pacman -S xf86-video-fbdev lxde xorg-xinit dbus base-devel sudo

Fixa så att sudo fungerar

visudo

Lägg till användaren alarm.

Ställ in LXDE för användaren alarm

Logga in som alarm.

Skapa filen .xinitrc i din hemkatalog hemkatalog. Hemkatalog är där kommandot ”cd ~” tar dig. Din hemkatalog är definierad i din användares inställningar.

vi .xinitrc

I denna konfiguratinosfilen ställer du in LXDEs specifika uppstartkomandot

exec startlxde

Spara och kör

startx

nu borde LXDE start upp.

För att göra ett x som går att logga in till från windows

pacman -S xrdp

 

Förberedelser innan kursen

Fixa ett antal fräsha system att börja med.

Ladda ner en färdig ARM7 Arch Linux

https://sourceforge.net/projects/archlinux-rpi2/

Det står att arch har slutat att göra klara paket. Såg det på deras hemsida att den senaste ison att ladda ner var från 2014. Denna är från 2017 så det är färskt nog. Hoppas att den har en bättre variant för att sköta skärmen.

https://archlinuxarm.org/platforms/armv7/broadcom/raspberry-pi-2

Skriv över filen till micro sdkortet

Ladda ner Win32DiskImager-0.9.5-binary från.

https://sourceforge.net/projects/win32diskimager/files/Archive/

Sätt ihop mini-SD kortet med konvertern till SD. Sätt in den i datorn. Formatera disken genom att högerklicka på den i filgranskaren.

Använd Win32DiskImager och lägg in img filen på disken. Godta alla varningar om att filer kommer att skrivas över på disken. Ungefär 6 minuter senare är den klar.

 

NXT scratchliknande IDE

kolla detta:

https://en.wikipedia.org/wiki/Lego_Mindstorms

http://www.legoengineering.com/alternative-programming-languages/

https://drive.google.com/drive/folders/0BycKtjGwKylicndOeXNkcXVlVG8

Roberta

https://lab.open-roberta.org//

https://groups.google.com/forum/#!forum/open-roberta

https://en.wikipedia.org/wiki/Open_Roberta

Enchanting

http://enchanting.robotclub.ab.ca/tiki-index.php

http://robotclub.ab.ca/articles/54/scratch-and-enchanting-resources

Kräver speciell mjukvara i nxt:n. OBS! Den började klicka när jag gjorde det första gången.

Fixade softbricken som gör att nxt:n tickar. http://www.robotc.net/forums/viewtopic.php?f=14&t=7133

först hitta filen i c:\Windows\inf>cd c:\Windows\inf

c:\Windows\inf>findstr Bossa *.inf
oem65.inf:due.bossa.name=”Bossa Program Port”
oem77.inf:due.bossa.name=”Bossa Program Port”

c:\Windows\inf>findstr Bossa *.inf

c:\Windows\inf>rename oem65.inf oem65.inf.bak
Åtkomst nekad.

Var tvugen att köra som administartör. Explorer för att döpa om filerna.

Sen körde jag enchanting>flash firmwire och det lyckades

SILENT

Scratch interface for lego nxt

https://sourceforge.net/projects/silentprj/

https://scratch.mit.edu/discuss/topic/9753/

Sensorer (Sensing)

Light

Sound

Touch

Ultrasonic

Button

Motorkontroll (Motion)

Start

Sync start

Stop

Sync stop

Motor# motor moving?

Angle of Motor# in deg

Installation på raspberry pi

Installation på windows

Silent är rätt gammalt senaste versionen jag hittar är från 23 sept 2009. Och fungerar med 32 bitars oracle java jdk på windows. Programmet startar utan problem men jag får inte NXT till att göra något och jag ser ingen indikation på att enheten är ansluten till programmet.

Varför scratchliknande

Har letat efter olika metoder att styra NXT robotorna i ett system som inte är samma som det som Lego har för att det systemet är relativt förlegat. Visst har det sin charm dock ej intuitivt för mig. I höstas så använde jag en del scratch

NXT med ”vanlig” kod

NXT har gått ur tiden så vad finns det för alternativ för att göra något mer spännade med dem idag?

Wikipedia har en lista:

https://en.wikipedia.org/wiki/Lego_Mindstorms

Samt den här sidan:

http://www.tldp.org/HOWTO/Lego/index.html

Hittade BrickxCC som har checkrutor för:

http://www.lejos.org/ – Senaste version 2015

http://brickos.sourceforge.net/ – Senaste version från 2005

pbForth

Vilket språk?

Python är trevligt, finns några varianter.

LUA, verkar intressant ibland.

Det verkar finnas en scratchvarant.

3d med kod

Har tänkt på det med att göra något för att koppla samman kod med 3d skapandet.

Såg openscad för ett antal år sedan och så berättade någon att de faktiskt använde det för att bygga gubbar tillsammans med sin publik. Så med en algoritm färdigskriven och så fyller man i värdena efter hand så blir det en figur. Det lät som en vettig övning.

Nu när tinkercad är det som de flesta lär sig tidigt så skulle det inte vara så svårt att gå över till det andra. Man har kunnat exportera openscad formatet från tinkercad.

https://github.com/openscad/openscad

Kollar andra varianter eller är det samma?

https://www.blockscad3d.com/editor/

http://www.teachingbites.com/072-2/

http://www.mattkeeter.com/projects/antimony/3/

https://github.com/mkeeter/antimony/releases

http://openjscad.org/

http://www.plasm.net/download/

https://github.com/dcowden/cadquery

makerscad === scratchycad

http://www.makerscad.com/#

http://www.play.makerscad.com/

http://scratchycad-docs.readthedocs.io/en/latest/getting_started.html

 

Blandad mjukvara som är opensource

http://narocad.com/

http://brlcad.org/

Har tänkt på freecad (3d med begränsningar)och librecad (riktig 2D).

 

Anpassad Windowsmiljö

En samling av appar jag använder.

Svorak

Tyvärr är inte det inbyggt i windows. Det finns i mac och linux. Någon dag hoppas jag på att det ska följa med systemet. Dvorak finns men det är inte svenska teckenuppsättningen med åäö.

http://aoeu.info/

AltDrag

Som openboxanvändeare i arch linux så är det väldigt vant för mig att flytta fönster med alt. Fast jag brukar ha det som windowstangenten i win för att för mycket annat ligger på alt när jag gör 3D.

https://stefansundin.github.io/altdrag/

Sharpkeys

Byter ofta ut capslock mot en backspaceknapp till. För att vara mer effektiv när jag skriver så har jag vant mig vid att ha två backspaceknappar.

https://sharpkeys.codeplex.com/

Win32DiskImager

dd finns inte i windows vad jag vet ännu. Det finns hopp för det nu när det kommer en bashversion i windows framöver har jag hört. Kanske är dd med så slipper man använda ett grafiskt 32 bitars program. Det gör lite ont i själen att använda 32bitarsprogram i 64bitars miljöer som i princip alla system jag haft varit sedan 2004.

https://sourceforge.net/projects/win32diskimager/

cmder

Jag har inte riktigt hittat en terminal som är en lösning för allt men cmder är rätt nära.

emacs

Japp. Den har också en bra terminal i sig vilket kan leda till att jag skippar emder beroende på vad jag ska göra.

Raspberry pi GPIO JS

Förbered ett operativsystem

Dokumenterar stegen till att kunna köra projektet från grunden så att det ska gå att upprepa. Tanken är att det ska finnas en terminal och att man skriver kod i en texeditor från terminalen exempelvis VIM eller emacs. Raspberry Pi enheterna är av typen 2 model B.

Vi har en bok här med lite exempel och annat för Raspberry av en C. A. Philbin.

.

Starta upp Raspberryn och skärmen

Ta ut micro-SD kortet och för in det i Raspberryn.

Koppla in skärmen, tangentbord, strömadapter. Slå till strömen. Arch linux bootar.

  • Login as the default user alarm with the password alarm.
  • The default root password is root.

Så till nästa svårighet. Hur fixar jag internet? [typ löst]

Jag har inte världens bästa lösning på det men det är att jag ansluter min mobiltelefon via usb. I en klassmiljö med kanske det blir krångligt att göra på det det viset om telefonen behöver skickas runt till alla åtta en i taget. Det finns wifi i huset så jag ansluter telefonen till det, slår på teathering via usb i androidtelefonen. I raspberryn loggar jag in som root och det markerar jag genom att ha # i början av raden medan $ är för användaren. För att komma åt internet så aktiverar jag dhcpn med:

#dhcpd

Testar att pinga någon adress som är kort och enkel att komma ihåg.

ping www.arla.se

Får jag svar så fungerar allt.

Tryck Ctrl-C (Ctrl förkortas ibland med ^ eller C) för att avbryta ping.

 

Mjukvara att installera

pacman -S npm sudo

Jag gjorde en uppdatering men det tog sådan tid tyckte jag att det inte var värt det, systemet är från en månad gammal så det ska inte vara något problem för någon annan att ordna.

  • Npm är node.JS pacage manager.
  • Sudo är super user do.
visudo

I vi hitta där du ska skriva in din användare (alarm). Det kan vara roligare att lägga till en egen användare men det beror på syftet med uppgiften, just nu vill jag komma så snabbt som möjligt till att köra GPIO med JS.

Byta tangentbordsuppsättning

Tangetbordslaout är standard engelska.

$ localectl list-keymaps | grep -i search_term
localectl set-keymap --no-convert keymap
vi /etc/vconsole.conf

ESC

:wq
KEYMAP=dvorak-sv-a1
localectl set-keymap --no-convert dvorak-sv-a1

Har ännu inte startat om men jag ändrade värdet i en konfiguration

su root
echo "KEYMAP=dvorak-sv-a1" >> /etc/vconsole.conf
^D

Nu kan jag börja lägga in saker för att jobba med det här.

Expandera disken till att använda hela utrymmet

by tomahhunt » Wed Jun 27, 2012 9:31 am

Actually you can resize the disk while active in arch linux.

As root:

fdisk /dev/mmcblk0

Delete the second partition /dev/mmcblk0p2
d
2

Create a new primary partition and use default sizes prompted. This will then create a partiton that fills the disk
n
p
2
enter
enter

Save and exit fdisk:
w


Now reboot. Once rebooted: 
resize2fs /dev/mmcblk0p2

Your main / partition should be the full size of the disk now.

Fantastiskt nu har disken 13 GB ledigt.

Skapa raspberrian sdkort till raspberrysarna.

https://www.raspberrypi.org/downloads/raspbian/

Från windows laddade jag ner zipen och skrev in det till disken med den rekommenderade mjukvaran.

https://sourceforge.net/projects/usbwriter/

Testade också rufus som skulle vara snabbare. Men då såg jag inte ens post med minneskortet i raspberryn så det fungerar inte med det.

Verkar som att det är något med hur den gör saker mot skärmen. Ser post och att den loggar in men sedan så försvinner allt. Så det är något med hur displayen handskas med när det väl kommer igång.

Iden är att köra något av det ifrån blogginlägget nedan.

http://www.robert-drummond.com/2013/06/06/raspberry-pi-gpio-inputoutput-in-javascript/

https://npmjs.org/package/pi-gpio

https://npmjs.org/package/rpi-gpio

https://npmjs.org/package/Onoff

Fixa utvecklingsverktyg i systemet sudo fix mot GPIO

pacman -S base-devel

Do the following on your raspberry pi

git clone git://github.com/quick2wire/quick2wire-gpio-admin.git
cd quick2wire-gpio-admin
make
sudo make install
sudo usermod -a -G gpio alarm

After this, you will need to logout and log back in.

Fler node uppgifter

https://www.npmjs.com/package/wiring-pi

http://thejackalofjavascript.com/raspberry-pi-node-js-led-emit-morse-code/

För att leta mer mjukvara.

#!/usr/bin/env bash

# packer dependencies
sudo pacman -S git fakeroot jshon expac base-devel

pushd
cd /tmp
mkdir packer
cd packer
wget https://aur.archlinux.org/packages/pa/packer/PKGBUILD
makepkg
sudo pacman -U $(ls | grep packer-)
popd
rm -rf /tmp/packer

En bloggserie om gpio och node i 6 delar

http://thejackalofjavascript.com/series/rpi/

https://learn.adafruit.com/node-embedded-development/events

En med fs
https://www.sitepoint.com/getting-started-with-the-raspberry-pi-gpio-pins-in-node-js/

Installera X (lxde)

pacman -Syu
pacman -S xf86-video-fbdev lxde xorg-xinit dbus

Also I think you can edit .xinitrc in your home directory

vi .xinitrc

The command you should put in your .xinitrc to start LXDE is:

exec startlxde

Then startx should start it (just tested that)

Saker som inte har fungerat men kanske fungerar för dig

Det finns ett tredje alternativ för det här steget (precis som om det skulle behövas fler). Jag tar upp det för att det kan vara att något går fel med det tidigare programmen vilket orsakar att skärmen blankar ut.

Raspberrian fungerar tyvärr inte med våra skärmar

Till att börja med behövs ett operativsystem på Raspberrysarna. Jag testade igenom alla de som fanns, dvs 8 stycken. En hade ett fungerande os som bootade in i terminal och promtade login. Det fanns ett till som bootade något grafiskt men det slocknade av och till. Körde terminaloset i alla raspberrys och alla postade utom en av dem. Orginalplanen var uppenbart att köra raspberrian för att alla guider som refererar till raspberry troligtvis underförstått menar att man har det systemet inlaggt. Tyvärr så är det något fel med hur skärmen hanteras i det operativsystemet som inte är kompis med någon av de skärmarna vi har. Det blir någon typ av överladding och så slutar det att fungera. Jag trodde att det var en skärm. Jag har testat med massa saker. Byta mellan skärmar, ändra i /boot/config och skärminställningar men problem kvarstår.

Useradd är lite känsligt så se till att -a är med (betyder append) om man inte använder det så kommer användaren att bara ha den gruppen som usermod satte.

Stjärnstrid i Scratch desktop

Inspirerad av Clone Wars.

* Introduktion
I detta projektet lär du dig att skapa ett spel där du ska rädda världen från rymdvarelser.
** Chekclista * Följ dessa INSTRUKTIONER
*** Testa ditt projekt * Tryck på den gröna flaggan för att TESTA
**** Spara ditt projekt * Se till att SPARA ditt arbete

* Steg 1: Göra ett rymdskepp
Nu ska vi göra ett rymdskepp som ska försvara jorden.
* Att göra lista
** Starta ett nytt Scratchprojekt. Ta bort katten. Använd jumpto.cc/scratch-new.
** Lägg till stjärnorna som Scen och lägg till rymdskeppet.
Bakgrunden finns i Nature och heter stars.
”Rymdskeppet” kan vara en enhörning och hittas i Fantasy, unicorn1.
Skala ner ”Rymdskeppet” och placera det i nedre kanten.
** Lägg till kod för att flytta rymdskeppet vänster och vänster med hjälp av piltangenterna.
Kodblocken som behövs är dessa:
[bild]
** Lägg till kod för att flytta rymdskeppet till höger.
*** TESTA ditt projekt
**** Spara ditt projekt

* Steg 2: Blixtar
Låt oss ge rymdskeppet förmågan att skjuta blixtar!
** Lägg till Lightning (eller Fantasy sun).
** När spelet startas ska den vara gömd till det att rymdskeppet avfyrar.
Skala den till lämplig storlek som är mindre än ”Rymdskeppet”.
Lägg till koden att den är gömd fram till dess.
[kod]
*** Nu blev det mycket att göra ifall det ska fortsättas i den vanliga editorn.
Tydligen så kunde jag köra flash i firefox på min Arch Linux maskin men inte i Chromium. Just nu så är det lite ont om tid så jag får göra om det hela i webbläsaren och följa manuset mer noga så att jag slipper göra spännade saker.

Direkt tänker jag på hur saker skull centrera sig till där hästen är. Ha flertalet andra sprites som uppenbarar sig medan huvudspriten är basen för deras centrering och agerar autonomt.

Anledningen till att det är en massa stjärnor är för att jag använder org-mode i emacs.

Scratch bollstuds

De scrathscript som fungerar på svenska var den med att klicka på spöken. Det skapade en del kreativa lösningar.

I onsdags så körde vi på kodkvällen katt och råtta spel som fungerade bra och manus fanns på svenska att hämta, skriva ut. Det tog en timma och femton minuter för ungdommarna att genomföra hela.

Följt av det krångligare raketprogrammet och som utmaning flappybird som inte heller är komplett att följa men fullt möjlig att göra om man lägger ner massa tid på det.

Vi började göra två spel i scratch idag. Tänkte bygga ett bollstudsprogram. Det andra var ett klicka på katt kakor och så regnade det katter, en för varje klick sen kunde man köpa andra valutor för poängen.

Gaffeln och boxmodellering

Boxmodellering är en metod för att skapa saker fort. En bra övning att börja med i Blender är att göra en gaffel. För detta kommer du behöva lära dig ett fåtal kommandon och sedan själv kunna skapa vad som helst när du behärskat metoden.
Det enda du behöver kunna är det som kallas att extrudera.
Gör en kub, välj edit mode och faces. Markera en sida av kuben och extrudera sidan. Gör det några gånger så att gaffeln blir så lång som du behöver. Gör sedan tänderna i ena änden genom att extrudera sidorna till ett T. Ifrån T:ts topp kan du nu göra gaffelns tänder.
Extrudera kan du göra med tangenten e.
Lycka till.

Kolla in noob to pro wikin:
Box modell av trex

Blender utbildningsfilmer och wikis

Blender tar tid att komma in i men är mödan värd. David har hittat två kanaler med serier av lektioner för att komma igång.

Dessa två är på engelska som det mesta men du kan säkerligen snappa upp ett och annat från dem. Har du lite frågor så kan jag troligtvis svåra på dem.

Blender: https://www.youtube.com/playlist?list=PLrgQj91MOVfjTShOMRY8TLmkJ7OFr7bj6

Blender: https://www.youtube.com/playlist?list=PLda3VoSoc_TR7X7wfblBGiRz-bvhKpGkS

YouTube är fylld med resurser och inspiration när man behöver något specifikt. Ibland är det lättare att hitta det man letar efter i skrivet material för att det som sägs inne i filmer indexeras dåligt än så länge. Det finns mossor av forum med allt du kan behöva veta samt uppslagsböcker.

En bra sådan resurs är wikin noob to pro som är väldigt omfattande och väldigt bra för att de går igenom moment grundligt. Den går att ladda ner som PDF om man nu vill läsa de ca 2000 sidorna i ett långt dokument istället för att nå informationen online.

arduino projekt 08 av 15 timglaset

Kul att göra ett timglas. Efter alla andra projekt så känns denna som en av de lättaste att få ihop. Däremot lite klurigt med att det verkar som att den glömmer bort att börja om tiden när man rör den ifall den har räknat för länge. Jag fick klämma fast tiltshiften för att den har så korta ben. Redan första gången jag skulle fästa tiltshiftsensorn i panelen hoppade den ut. Så höll den på konstant fram till att jag gjorde såhär. Så om du får samma problem så kan du inspireras av detta.

Jag tog två kablar som är stabila och tryckte fast sensorn under dem. Var glad

Utforskning av IDE för arduinoutveckling

Jag har börjat att söka alternativ för arduinos IDE för att jag vill ha textkomplitering utöver syntaxförstärkta färger. Jag har ännu inte hittat en fullständig lösning. Den jag skriver i mest just nu är LightTable. Jag har även provat jEdit.

Det bästa som jag har hittat är Mariamole. Det har allt som jag letar efter!

Jag testade också att skriva i jEdit vilket med lite pill med inställningarna gav mig syntaxhighlighting från java men inte fulländat med processing/arduino (det är så lika så att det gör inget tycker jag). Något fint med jEdit är att mittenklick går att fixa som i gnu/linux med att kopiera och klistra in som förväntat. Jag tycker om autokompliteringen som LightTable ger och den snygga diskreta sök och ersättfunktionalitetet.Koden i denna var superlätt. Däremot är den aningen lurig i och med att komponenterna i illustrationen skiljer sig från de jag har i mitt paket. Det kan bli svårigheter för de som stirrar sig blinda på instruktioner och det är därför jag skriver denna lilla manualen för att komma över den biten. Var glad.

Länkar till MariaMole

http://dalpix.com/mariamole
https://github.com/aporto/mariamole
http://sourceforge.net/projects/mariamole/
https://www.facebook.com/mariamole.ide

http://hackaday.com/tag/ide/

arduino bokens projekt 05 av 15

Projektet kommer från Arduino projects book som följer med arduino starter kit. Detta är det femte projektet som heter mood cue.

Koden i denna var lätt (enligt mig). Däremot är den aningen lurig att konstruera i och med att komponenterna i illustrationen skiljer sig från de jag har i mitt paket. Här är hur jag löste det ifall du skulle fastna så kan du se om detta är till någon hjälp.

  1. Motorn är annorlunda än i illustrationen och därför ska du koppla annorlunda än i manualen!
    Se till att du har rätt med GND, signal och 5V. Det står på motorn i mitt fall vilken som är vilken men jag tog också tipset från att i instruktionen så står det att den svarta är GND (ground eller jord på svenska). Se till att de är rätt så att motorn mår bra (jag kopplade först som i manualen innan jag såg det och då vibrerade den konstigt så att jag fatta att något var fel).
    image
  2. Dimmern kräver ett mycket större område än vad den gör i manualen.
    Jag förlängde hela brädet för att kunna göra det möjligt för den att få plats. Vart du placerar den är upp till dig men du börjar att ana att det finns fler möjligheter.
    image

Så var uppmärksam för att de komponenterna du har kan skilja sig och var kreativ för att lösa de problemen som uppstår av att illustrationen inte stämmer (ritningen stämmer såklart för att den är komponentoberoende). Var glad.

Gör modellen utskriftsklar

Det kan kännas oerhört frustrerande i ögonblicket man har slutfört modellerandet men att arbetet inte är slutfört. Här sammaställer jag så småningom en så omfattande guide som möjligt för att göra modellen utskriftsklar. Såklart så kommer du att hitta fler saker som kan krångla till det senare i utskriften och därför så tar jag gärna emot tips.

Metoden

Spara en separat fil för utskriften. När du förbereder modellen för utskriften gör du förändringar som du inte kan göra ogjorda senare. Själv brukar jag spara en med filnamn-KLAR eller att jag numrerar den ifall att jag känner att jag kommer att ändra mycket filnamn_0, filnamn_1a och så vidare.

För att skrivaren ska förstå modellen behöver modellen vara sparad i ett format som slicern. Slicern i vårt fall är MakerBot Desktop till de två makerbotsen medan den stora i skaparrummet har en annan. Detta är oftast det minst komplicerade momentet.

Normaler

3D skrivarna ser skillnad på huruvida något är vänt. Ibland kan det ge konstiga resultat. Här är ett exempel på ett bord med fyra ben som skrevs ut med felvända normaler. Resultatet är att hela modellen är utskriven med stödmaterial.

IMG_20151005_141943 IMG_20151005_141954

Blender

  1. Slå ihop modellen så att allt sitter samman genom att i Object Mode (tab) markera allt (a), join (^j). Eller gör som på bilden genom att använda mellanslag och sök upp join.
    join
  2. Kolla om det finns några punkter som går att slå ihop efter objekternas sammanslagning. Edit Mode (tab) markera allt (a), remove doubles (mellanslag ”remove d” eller klicka i vänstra menyn).
  3. Se till att allt i modellen efter ihopslagningen har normalerna vända utåt:recalcNorm
  4.  Exportera som .stl:
    exportSTL
  5. Öppna .stl filen i MakerBot Desktop

Tips på mer om att göra modellen redo

Remove doubles förklarad på engelska: https://www.youtube.com/watch?v=ADBmqYzxcwo

 

Modelleringstekniker

Generellt tre sätt.

Arkitekten
Stenhuggaren
Keramikern

Arkitekten ritar först en riktning för vart den slutliga produktionen ska bli. Vanligen ifrån tre perspektiv. Därefter lyfter man volymer och passar ihop ritningarna.

Stenhuggaren tar bort det som inte är en elefant ifrån ett marmorblock.

Keramikern bygger på, drar och petar på sin skål efter att grundformen är på plats.

Tärningar, Booleanska operationer

image

Tärningar kan ha flera olika funktioner och utseende.
Tärningar med prickar, kuber, mönster, symboler.

Blender

Göra en med buktande utsida. Alternativt visa booleans.
Göra en booleans gör man genom att tillföra en modifyer. Tänk på att det behöver tillföras i Objekt mode så se till att tabba ur Edit mode.
Booleans fungerar genom att markera den stora delen och ta bort den mindre. Båda objekten blir kvar därför brukar jag flytta undan det jag klippt ur till ett annat lager med move to layer (m), 2 och enter. Tillbaka till arbetslagret med 1.

N högermenyn.

Lär ut enkla sätt att arbeta med objekt mode kontra edit mode. För att förstå listan med namn och att använda modifierare.

Gör booleanska operationer

Booleanska operationer heter den funktion i bland annat blender för att slå samman modeller/objekt med varandra eller att göra hål alternativt att bevara det som blir kvar av den del som delarna har gemensamt.

Högerklicka det objekt som du ska göra hål.

För att göra hål markerar du den större av de två och i verktygen till höger väljer att lägga på ett booleanskt verktyg:
meny

Nu tillkommer en ruta nedanför texten Add Modifier. I rutan ska du göra två saker. Först väljer du Difference i dropdownmenyn. Därefter klickar du i den mindre rutan nedanför Object och välj objektet som du ska använda för att göra hålet med. Godkänn genom att trycka på Apply:
Diff

Nu har det skett men den lilla är fortfarande kvar. Du kan flytta den till ett annat lager men alt-m 2 enter eller bara ta bort den (x).
resultat

Var glad.

Davids pussel, T

Denna kurs ger en bra inblick i hur olika modelleringsverktyg fungerar. ThinkerCad skiljer sig från Blender samt Sketch up och tar användaren in i ett mer tekniskt perspektiv Autocad på vissa sätt.
1. Förbered konton på https://www.tinkercad.com/ för de som kommer att gå kursen.
2. Rita upp pusselbitar.
Var pusselbit behöver ha ett hål och en bula.

En lagom storlek på pusselbitarna är kvadratiskt 30mm och 3mm högt.
För ca 10 studenter tar en sådan utskrift i dagsläget under en timma.

Förstå hantverket. nivå 1

Visa konverteringarna mellan modelleringsmjukvara. Lite som från ax till limpa.
Ide Papper Modell Slice Utskrift.

Arbeta med att alltid börja med fem minuter med papper och penna. Det ger en bra metodik.

I början kan det vara svårt att förstå varför som utskrifterna blir tokiga. Att själv kunna köra en test är ett stort steg i sin utveckling i att förstå hur datorn behandlar modellen.

byggara leksaker, nivå 4

För att beskriva ungefär hur stora saker kan vara för att vara meningsfulla eller underhållande. Också att sätta ett rimlig storlek för hur stora saker som deltagarna hinner skriva ut på kort tid. En sådan här storlek skulle kunna ta 10-20 min vilket är lagom för att flera deltagare på en kurs ska kunna skriva ut något.

image

Inspirerat från exempelvis kinderöverraskningar. att de ska rymma i den lilla ytan som ägget kan rymma.

image

Detta är en snurra som man blåser på så att de snurrar och att de är två är så att man kan göra det med någon annan. Typ sharing is caring.

Cykeldesign i miniatyrer nivå 2

Cyklar kan kopplas till en tema som framtidens fordon.

Prototyper ska symbolisera vad de blir som färdiga och det är väldigt mycket som hänger på designen.

Poängen är att lära sig att skriva ut något platt i två delar som sedan sätts ihop. I detta fallet cykelramen och styret. cykelramen och styret. Styret ska alltså klickas fast i cykelramen som är en hel cykel med hjul och pedaler.

SketchUp

I SU så kan man använda sig av alla former för att göra cykelmodellen till något platt och sen putta.

Komandon SU
P (push) putta.

Blender

För att göra ett svängbart styre i Blender så behöver man göra hål i materialet. Kom ihåg senare om det blir nog bra för en utskrift att cykeln ska vara stor nog för att styret ska komma ner i ramen. Låt hålet vara en millimeter brett och att längden blir åtminstone 5 mm. Det kan kanske justeras i slicern beroende på hur du gör designen.

Gör booleanska operationer

Booleanska operationer heter den funktion i bland annat blender för att slå samman modeller/objekt med varandra eller att göra hål alternativt att bevara det som blir kvar av den del som delarna har gemensamt.

För att göra hål markerar du den större av de två och i verktygen till höger väljer att lägga på ett booleanskt verktyg:
meny

Välj sedan diff samt den mindre modellen i listan till höger och godkänn:
Diff

Nu har det skett men den lilla är fortfarande kvar. Du kan flytta den till ett annat lager men alt-m 2 enter eller bara ta bort den (x).
resultat

Var glad.

Verktygslådan nivå 0. S B T

Ge en smak av vad som är möjligt att skapa. Brukar leda till att folk gör hus.

Var 10 min ge ett nytt verktyg.
1 Rektanglar och linjer.
2 cirklar och arch

Blender
Edit och objekt mode.
De tre lägena. Markera igenom.
A addera
b box markera
s skala
g grabba tag

Tinker Cad
Beskriva form och hål.
Lägga till former.
Flytta med svarta, förändra med vita och snurra.
Visa hur man rätar upp objekt med varandra.
Använda linjalen för att skriva in mått.

Fyrbenting nivå 2

Övningen görs i blender eller sketchup. Tar en och en halv timme. Kräver att man kan göra gubben.

Meningen är att visa hur saker blir när man tänker på flera vinklar och planerar sin modell i förväg. Blender boxmodelering. Spegling av objekt.

Grunden i att spegla en modell

SketchUp

Markera (med mellanslag) byt till flytta/move (tryck m eller klicka på knappen med fyra pilar).

move

När du nu börjar att flytta på objektet så kommer den att flyttas ensam så fort du trycker på ctrl (uttalas control) så kommer det att uppstå en kopia på objektets gamla plats.

moveClicmoveClicCtrl

Den är för att vara en fyrbenting lite väl långt borta. För att flytta benet tillbaka till resten av figuren samt att ställa dem i linje med varandra. välj höger övre hörn, kolla att texten Endpoint dyker upp. Så kan du snappa den till kanten.

moveClicCtrlDuo1

Flippa den.

moveClicCtrlDuoFlipp

Färdig snappad mot resten av katten i rätt vinkel så kan du göra nästa.

doneKatt

Blender

Gör en kub

I Object Mode lägg till modifyern Mirror.

För att spegligen ska fungera som önskat så behöver du öppna ett hål i modellen för att Blender ska kunna sy ihop spegligarna med varandra. Hålet innebär att det finns vertecies men att det saknas en yta (Face).

Dela på den i två genom att halvera den. Anledningen till Att halvera den kan gå till på lite olika vis.

Jag brukar använda mig  av Ctr+R varpå jag tar bort den ena halvan.

Boxmodelering

E används för att extrudera.