Bil Dator med HeadUp Display

Bygger på en 12 volts dator med VGA och S-video utgång.
Till S-videon kopplas en "backvideo" skärm som kan spegla och
vända bilden upp och ner och hit och dit.
Så det blir den jag tänkt att ha som HeadUp display. Till VGA utgången får en pekskärm husera.
Allt med klonad bild på båda skärmarna.
GPS puck med Navigator 11 Free (MapFactor) är en av funktionerna. http://navigatorfree.mapfactor.com/en/
CAN bus USB adapter (Lawicel) med CarPC eller rättare sagt Dashboard programet från http://trionic.mobixs.eu/   för att visa motor data mm.
Samt en liten WEB kamera som backkamera. Musik och Video (TV-sticka) får bli överkurs.

Det jag har strul med är strömförsörjningen med till och från slag av datorn (drar 50mA avstängd).
Försöker bygga någon slags fördröjning när tändningen slås av så ska ett relä hålla datorn igång ca.30sek.
och en kort puls som kortsluter av/på knappen precis när tändingen slås av som gör att datorn börjar stänga ner.
Lösningen blev denna krets:
Ändrade i BIOS så att datorn alltid startar när den får ström, tyvärr verkar inte detta 100%igt.

Monterade in HeadUp displayen och det verkar inte heller fungera , mycke speglingar och
det måste vara väldigt mörkt för att få bild i vindrutan och den blir för diffus med LCD skärm.
GPS pucken hamnade vid solsensorn.


Sen blev det en USB panel av bara farten istället för askkoppen.
Halvljus indikatorn hamnade där också i WLAN indikeringen.




Tankvärmare (Oljevärmare)

Nu till vintern så är det väl inte bara jag som ska ha det varmt och gött.
Så det blev en montering av en tankvärmare under oljetråget.
Testade den lite på bänken innan och den verkar värma till 100 grader och sedan svalnar till 60.
Så det blir väl lagom temp. efter 1 timme. 0,2 amp är ju snålare än en vattenkokare.
Får väl se om man byggt en frityrkokare eller inte.
Uppdatering 2014-01: Det blev en kort period med frityrkokaren när jag kollade upp den så
var den lika iskall som motorn. Efter obduktion så var det avbrända trådar i den. Surt sa räven.

Hel och Halvljus automatik.

Dom ljussensorer som blev tillövers i Regnsensor bygget tänkte jag använda i detta projekt som
går ut på att dom ska känna av omgivande ljus för att aktivera halvljuset när det blir mörkt.
Byter ut bygeln under reläboxen i motorutrymmet med ett relä och när
halvljuset är av så kopplas en lampa i den bakre delen av blinkersen. (USA-blinkers)

Och den andra funktionen blir automatiskt avbländning av helljuset vid möte.
Så en sensor är riktad framåt och en uppåt som mäter bakgrundsljuset.
Samt en signal in när helljuset är aktivt. Tar den ifrån Helljus indikeringen i instrumentpanelen.
Så när man får ett möte så kortsluts kontakten vid helljus spaken med ett relä.





Ljussensorn som sätts i vindrutan brevid regnsensorn.

Halvljusrelä inkopplingen i det "rena" motorutrymmet.
När kontakten under reläboxen är kortsluten så lyser
halvljuset (funderar på om man ska koppla in en kondensator
för att få halvljuset att tona upp och ner, blir i version 2.)
Satte en lysdiod i bilen för att indikera när halvljuset är aktivt.
Under dagsljus så matas lamporna i bakredelen av blinkerserna med 12 volt ifrån kontakten via en säkring.
Gjorde ett hål i blinkersen som passade några gamla
sidoblinkers socklar med plats för en 5 watts wedge lampa.






Nu får man se om allt fungerar i praktiken.
Så om ni möter en gammal Saab som inte bländar av i tid så ha lite överseende. Det är nog bara jag som testar automatiken :shock: :lol:

Lite uppdatering så har det inte fungerat så bra med helljus avbländningen. Svårt att få balans mellan snabbreaktion och stabil funktion...
Provat olika mjukvaru varianter men men inget som fungerat tillfredställande.
2015-04:
Monterat in en 5 volts lampa i instrumentet som indikerar halvljuset den bredvid TCS lampan.
Är tredje placeringen på den indikeringen.TCS kontakten är bortplockad och används int.

Mjukvaran till Ljussensorn. (Arduino)

Senaste programvaran finns på Google Driven./2021-06-07

Blå larmdiod, nu grön.

Det blev en blå larmdiod när jag behövde den röda dioden för regnsensor bygget.
(Fast den behövdes inte sen ändå...)

Uppdatering av hur larmdioden kopplades in med ett 470 ohms motstånd under krympslangen.
Isolerade + sladden och honkopplingen och med olika längd allt för att undvika kortslutningar.
Man har ju lärt sig av misstagen....
(Motståndet är inte så kritiskt med värdet men det behövs, allt från 330 till 680 ohm fungerar).
2015-04: Lyckades bryta av ett ben på larmdioden så då tar man vad man har och det är
en bunt klargröna lysdioder så det blev en sån. Bild saknas pga av svårighet att ta bild på en blinkande diod, försök själv.....

Regnsensor

kan vara bra att ha till den svenska sommaren.
Försökte djärvt att bygga den av en gammal optisk mus och 2 ljussensorer.
Men den blev mer ljuskänslig än regnkänslig. Den reagerade på belysningen i tunnlar mm.
Men jag har en plan för att utnyttja ljussensorerna, återkommer med det......

Så det blev plan B en beg. sensor från en 95a. Med info ifrån denna avhandling.
Master Thesis 383.pdf
Utgångarna ifrån regnsensorn (hög och låg) hastighet får styra 2 relän som sedan får
styra torkarmotorn. (Tjuv)Kopplade in dom sakerna vid rattstången.
Ersatte läget för intervall med aktivering av regnsensor. Kopplade in det + feedback signal och
kraftdiod under relät för vindrutetorkaren (bakom handsfacket). Schema för inkopplingen.:

Nu skulle man kunna ersätta relät helt med regnsensorn och då koppla in allt på
relä kontakten med flatstift och då bara behöva tjuvkoppla högfarts läget vid rattstången.
Version 2 som inte är testad men borde fungera ? Inga garantier :

Monteringen av regnsensorn på framruta var inte det lättaste, men det ska ju inte vara enkelt.
Med en metallbygel som jag satte fast på backspegeln med 2 buntband och dubbelhäftande tejp.
Med en skruv och mutter för att pressa regnsensorn ordentligt mot rutan ihop med en tunn yta av silikonlim så blev det stabilt och fungerade system.


Rattknappar till en Alpine stereo.

Bygget bygger på en Microprocessor ifrån Arduino och med modifierad mjukvara
ifrån MP3car.com . Jag matar den via en 12 volts regulator för att reglera ner 14,4 volt från bilen.
Har lagt in tutan som en extra "knapp" funktion med en egen utgång till ett relä som drar bilens "tut" relä. (det räcker med ett litet relä). Logiskt, ni hänger med ? Ett schema kanske hjälper.
Knapparna på ratten ger olika spänningar beroende vilken knapp som trycks in.
Knapparna ska matas med 5 volt via ett pullup motstånd på 500 ohm (använde ett 470 ohm).
Kopplade isär kontakten för tutan (grå ej orange som är för krockkudden) vid rattstången för
ta signalerna till processorn och kopplade in relä utgången till den andra ändan till tutan.
Bild innan jag gick loss med vulktejp och buntband....
Monteringen av krockkudden till min ratt krävde lite modifikationer i plasten.
Fick tabort plast från kåpan bakom rattknapparna och en del material vid rattekrarna.
Enklast var att montera bort ratten och "dremla" av plasten. Men tänk på att ställa bilen rakt innan.
Har man ratten med blindkåpor ístället för rattknapparna så är det nog mer plug and play.

Tillslut var den på plats och med lite modifieringar i programet (Seek Up och Down var omkastat)
så funkade allt. Det knepiga är vad man ska ha för funktioner på SRC och NXT knapparna
med dubbeltryck eller när man håller in dom. Vet ej vilka funktioner dom har på 9-5an.
Men man får väl prova sig fram och det är lätt att plugga in USB kabeln och programera den.

Programvaran Alpine Stereo

Här kommer ver.2.:  (Tutan åtg. och med "defeat" ON/OFF funktion inlagd vad det nu är ?)

//Inklusive Tutan med egen utgång pin8 ,pull up moständ 470 ohm.
// please excuse the lack of comments
// this works with a simgle button and has the correct timings
// adding the send of signals to stereo.. simulating by sending to serial
#define CHECK_MS 5
#define DOUBLE_MS 400
#define HOLD_MS 1200
#define NO_B 870 //nothing pressed
#define MODE_B 776 // NXT(mode)
#define NXTD_B 643 // NEXT DOWN<<
#define NXTU_B 508 // NEXT UP>>
#define MUTE_B 385 // SRC (mute)
#define VOLU_B 264 // VOLUME UP+
#define VOLD_B 151 // VOLUME DOWN-
#define HORN 020 // TUTAN
#define alpPin 7    //utgång Alpine stereo
#define hornPin 8  //utgång för tutan 480ms high

boolean volUp[48] =   {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 1,1,0,1,1,0,1,1, 1,1,0,1,0,1,1,0, 1,1,0,1,0,1,0,1};
boolean volDn[48] =   {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 0,1,1,0,1,1,0,1, 1,1,1,1,0,1,1,0, 1,1,0,1,0,1,0,1};
boolean mute[48] =    {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 1,0,1,0,1,1,0,1, 1,1,1,0,1,1,1,0, 1,1,0,1,0,1,0,1};
boolean pstUp[48] =   {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 1,0,1,0,1,0,1,1, 1,1,1,0,1,1,1,1, 0,1,0,1,0,1,0,1};
boolean pstDn[48] =   {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 0,1,0,1,0,1,0,1, 1,1,1,1,1,1,1,1, 0,1,0,1,0,1,0,1};
boolean source[48] =  {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 1,0,1,1,0,1,1,1, 1,1,0,1,1,0,1,1, 0,1,0,1,0,1,0,1};
boolean trkUp[48] =   {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 1,0,1,1,1,0,1,1, 1,1,0,1,1,0,1,0, 1,1,0,1,0,1,0,1};
boolean trkDn[48] =   {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 0,1,0,1,1,1,0,1, 1,1,1,1,1,0,1,0, 1,1,0,1,0,1,0,1};
boolean power[48] =   {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 0,1,1,1,0,1,1,1, 1,1,1,0,1,0,1,1, 0,1,0,1,0,1,0,1};
boolean entPlay[48] = {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 0,1,0,1,0,1,1,1, 1,1,1,1,1,1,0,1, 0,1,0,1,0,1,0,1};
boolean bandProg[48] ={1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 0,1,1,0,1,0,1,1, 1,1,1,1,0,1,1,1, 0,1,0,1,0,1,0,1};
boolean defeat[48] =  {1,1,0,1,0,1,1,1, 1,1,0,1,1,0,1,1, 1,0,1,0,1,0,1,1, 0,1,1,0,1,1,1,1, 1,1,1,0,1,1,0,1, 0,1,0,1,0,1,0,1};
boolean spFlag = 0;
boolean dpFlag = 0;
boolean hpFlag = 0;
int button = 0;
int spbutton = 0;
/*
0-none
1-mode
2-track +
3-track -
4-mute
5-vol+
6-vol-
*/
void setup() {
Serial.begin(9600);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
}
void loop() {
int anaPin = 0; 
anaPin = analogRead(0);
  if (anaPin > HORN - 20 && anaPin < HORN + 20 )
  {digitalWrite(hornPin, HIGH);
  delay(48);
  digitalWrite(hornPin, LOW);
  }  else{
static unsigned long oldTime = 0;
int switchStatus = 0;
if (millis() >= oldTime + CHECK_MS) {
oldTime = millis();
switchStatus = CheckSwitch();
if (switchStatus == 0) {
//no button press
} else if (switchStatus == 1) {
// single press
switch (spbutton) {
case 0: // no butto, why are wh here
break;
case 1: // NXT mode
entPlaySend();
break;
case 2: // next up
trkUpSend();
break;
case 3: // next down
trkDnSend();
break;
case 4: // SRC mute
sourceSend();
break;
case 5: // vol up
volUpSend();
break;
case 6: // vol down
volDnSend();
break;
}
} else if (switchStatus == 2) {
//double press
switch (spbutton) {
case 0: // no butto, why are wh here
break;
case 1: // NXT mode
bandProgSend();
break;
case 2: // next up (folder up)
pstUpSend();
break;
case 3: // next down (folder down)
pstDnSend();
break;
case 4: // SRC mute
defeatSend();
break;
case 5: // vol up
volUpSend();
break;
case 6: // vol down
volDnSend();
break;
}
} else if (switchStatus == 3) {
//hold
switch (spbutton) {
case 0: // no butto, why are wh here
break;
case 1: // NXT mode
muteSend();
break;
case 2: // next up (track fwd)
trkUpSend();
break;
case 3: // next down (track rev)
trkDnSend();
break;
case 4: // SRC mute (av/på)
powerSend();
break;
case 5: // vol up
volUpSend();
break;
case 6: // vol down
volDnSend();
break;
}
}
}
}
}
// Service routine called by a timer interrupt
int CheckSwitch() {
static uint16_t State = 0; // Current debounce status
static int curTime = 0;
State=(State<<1) | !RawKeyPressed() | 0xe000;
if (!spFlag) {
if (hpFlag) {
if (State == 0xe000) {
return 3;
} else {
hpFlag = 0;
}
}
if (State==0xf000) {
spFlag = 1;
hpFlag = 1;
dpFlag = 1;
curTime = 0;
spbutton = button;
return 0;
}
}
if (hpFlag && State != 0xe000) {
hpFlag = 0;
}
if (spFlag && hpFlag && curTime > HOLD_MS/CHECK_MS) {
spFlag = 0;
dpFlag = 0;
return 3;
} else if (spFlag && dpFlag && State == 0xf000 && curTime < DOUBLE_MS) {
spFlag = 0;
hpFlag = 0;
dpFlag = 0;
return 2;
} else if (spFlag && !hpFlag && curTime > DOUBLE_MS) {
spFlag = 0;
hpFlag = 0;
dpFlag = 0;
return 1;
} else {
curTime = curTime + CHECK_MS;
return 0;
}
}
boolean RawKeyPressed() {
int anaPin = 0;
anaPin = analogRead(0);
if (anaPin > NO_B - 20) {
button = 0;
return 0;
} else if (anaPin > MODE_B - 20 && anaPin < MODE_B + 20 ) {
button = 1;
return 1;
} else if (anaPin > NXTU_B - 20 && anaPin < NXTU_B + 20 ) {
button = 2;
return 1;
} else if (anaPin > NXTD_B - 20 && anaPin < NXTD_B + 20 ) {
button = 3;
return 1;
} else if (anaPin > MUTE_B - 20 && anaPin < MUTE_B + 20 ) {
button = 4;
return 1;
} else if (anaPin > VOLU_B - 20 && anaPin < VOLU_B + 20 ) {
button = 5;
return 1;
} else if (anaPin > VOLD_B - 20 && anaPin < VOLD_B + 20 ) {
button = 6;
return 1;
} else {
button = 0;
return 0;
}
}
//-----------SOURCE------------------
void sourceSend() {
//first send 8ms high
digitalWrite(alpPin, HIGH);
delay(8);
// send 4.5ms low
digitalWrite(alpPin, LOW);
delayMicroseconds(4500);
for (int i = 0; i <= 47; i++) {
//send bit for 0.5ms
if (source[i] == 1 ) {
digitalWrite(alpPin, HIGH);
} else {
digitalWrite(alpPin, LOW);
}
delayMicroseconds(500);
// wait 0.5ms
digitalWrite(alpPin, LOW);
delayMicroseconds(500);
}
// send 41ms low
digitalWrite(alpPin, LOW);
delay(41);
}
//-----------POWER ON/OFF------------------
void powerSend() {
//first send 8ms high
digitalWrite(alpPin, HIGH);
delay(8);
// send 4.5ms low
digitalWrite(alpPin, LOW);
delayMicroseconds(4500);
for (int i = 0; i <= 47; i++) {
//send bit for 0.5ms
if (power[i] == 1 ) {
digitalWrite(alpPin, HIGH);
} else {
digitalWrite(alpPin, LOW);
}
delayMicroseconds(500);
// wait 0.5ms
digitalWrite(alpPin, LOW);
delayMicroseconds(500);
}
// send 41ms low
digitalWrite(alpPin, LOW);
delay(41);
}
//---------Track NEXT UP-----------------------------------------------
void trkUpSend() {
//first send 8ms high
digitalWrite(alpPin, HIGH);
delay(8);
// send 4.5ms low
digitalWrite(alpPin, LOW);
delayMicroseconds(4500);
for (int i = 0; i <= 47; i++) {
//send bit for 0.5ms
if (trkUp[i] == 1 ) {
digitalWrite(alpPin, HIGH);
} else {
digitalWrite(alpPin, LOW);
}
delayMicroseconds(500);
// wait 0.5ms
digitalWrite(alpPin, LOW);
delayMicroseconds(500);
}
// send 41ms low
digitalWrite(alpPin, LOW);
delay(41);
}
//---------Track NEXT DOWN----------------------------------------------
void trkDnSend() {
//first send 8ms high
digitalWrite(alpPin, HIGH);
delay(8);
// send 4.5ms low
digitalWrite(alpPin, LOW);
delayMicroseconds(4500);
for (int i = 0; i <= 47; i++) {
//send bit for 0.5ms
if (trkDn[i] == 1 ) {
digitalWrite(alpPin, HIGH);
} else {
digitalWrite(alpPin, LOW);
}
delayMicroseconds(500);
// wait 0.5ms
digitalWrite(alpPin, LOW);
delayMicroseconds(500);
}
// send 41ms low
digitalWrite(alpPin, LOW);
delay(41);
}
//---------Folder PST? UP-----------------------------------------------
void pstUpSend() {
//first send 8ms high
digitalWrite(alpPin, HIGH);
delay(8);
// send 4.5ms low
digitalWrite(alpPin, LOW);
delayMicroseconds(4500);
for (int i = 0; i <= 47; i++) {
//send bit for 0.5ms
if (pstUp[i] == 1 ) {
digitalWrite(alpPin, HIGH);
} else {
digitalWrite(alpPin, LOW);
}
delayMicroseconds(500);
// wait 0.5ms
digitalWrite(alpPin, LOW);
delayMicroseconds(500);
}
// send 41ms low
digitalWrite(alpPin, LOW);
delay(41);
}
//---------Folder PST? DOWN----------------------------------------------
void pstDnSend() {
//first send 8ms high
digitalWrite(alpPin, HIGH);
delay(8);
// send 4.5ms low
digitalWrite(alpPin, LOW);
delayMicroseconds(4500);
for (int i = 0; i <= 47; i++) {
//send bit for 0.5ms
if (pstDn[i] == 1 ) {
digitalWrite(alpPin, HIGH);
} else {
digitalWrite(alpPin, LOW);
}
delayMicroseconds(500);
// wait 0.5ms
digitalWrite(alpPin, LOW);
delayMicroseconds(500);
}
// send 41ms low
digitalWrite(alpPin, LOW);
delay(41);
}
//---------MUTE---------------------------------------------------
void muteSend() {
//first send 8ms high
digitalWrite(alpPin, HIGH);
delay(8);
// send 4.5ms low
digitalWrite(alpPin, LOW);
delayMicroseconds(4500);
for (int i = 0; i <= 47; i++) {
//send bit for 0.5ms
if (mute[i] == 1 ) {
digitalWrite(alpPin, HIGH);
} else {
digitalWrite(alpPin, LOW);
}
delayMicroseconds(500);
// wait 0.5ms
digitalWrite(alpPin, LOW);
delayMicroseconds(500);
}
// send 41ms low
digitalWrite(alpPin, LOW);
delay(41);
}
//---------bandProg---------------------------------------------------
void bandProgSend() {
//first send 8ms high
digitalWrite(alpPin, HIGH);
delay(8);
// send 4.5ms low
digitalWrite(alpPin, LOW);
delayMicroseconds(4500);
for (int i = 0; i <= 47; i++) {
//send bit for 0.5ms
if (bandProg[i] == 1 ) {
digitalWrite(alpPin, HIGH);
} else {
digitalWrite(alpPin, LOW);
}
delayMicroseconds(500);
// wait 0.5ms
digitalWrite(alpPin, LOW);
delayMicroseconds(500);
}
// send 41ms low
digitalWrite(alpPin, LOW);
delay(41);
}
//---------entPlay---------------------------------------------------
void entPlaySend() {
//first send 8ms high
digitalWrite(alpPin, HIGH);
delay(8);
// send 4.5ms low
digitalWrite(alpPin, LOW);
delayMicroseconds(4500);
for (int i = 0; i <= 47; i++) {
//send bit for 0.5ms
if (entPlay[i] == 1 ) {
digitalWrite(alpPin, HIGH);
} else {
digitalWrite(alpPin, LOW);
}
delayMicroseconds(500);
// wait 0.5ms
digitalWrite(alpPin, LOW);
delayMicroseconds(500);
}
// send 41ms low
digitalWrite(alpPin, LOW);
delay(41);
}
//---------VOL UP-----------------------------------------------
void volUpSend() {
//first send 8ms high
digitalWrite(alpPin, HIGH);
delay(8);
// send 4.5ms low
digitalWrite(alpPin, LOW);
delayMicroseconds(4500);
for (int i = 0; i <= 47; i++) {
//send bit for 0.5ms
if (volUp[i] == 1 ) {
digitalWrite(alpPin, HIGH);
} else {
digitalWrite(alpPin, LOW);
}
delayMicroseconds(500);
// wait 0.5ms
digitalWrite(alpPin, LOW);
delayMicroseconds(500);
}
// send 41ms low
digitalWrite(alpPin, LOW);
delay(41);
}
//---------VOL DOWN-----------------------------------------------
void volDnSend() {
//first send 8ms high
digitalWrite(alpPin, HIGH);
delay(8);
// send 4.5ms low
digitalWrite(alpPin, LOW);
delayMicroseconds(4500);
for (int i = 0; i <= 47; i++) {
//send bit for 0.5ms
if (volDn[i] == 1 ) {
digitalWrite(alpPin, HIGH);
} else {
digitalWrite(alpPin, LOW);
}
delayMicroseconds(500);
// wait 0.5ms
digitalWrite(alpPin, LOW);
delayMicroseconds(500);
}
// send 41ms low
digitalWrite(alpPin, LOW);
delay(41);
}
//---------Defeat-----------------------------------------------
void defeatSend() {
//first send 8ms high
digitalWrite(alpPin, HIGH);
delay(8);
// send 4.5ms low
digitalWrite(alpPin, LOW);
delayMicroseconds(4500);
for (int i = 0; i <= 47; i++) {
//send bit for 0.5ms
if (defeat[i] == 1 ) {
digitalWrite(alpPin, HIGH);
} else {
digitalWrite(alpPin, LOW);
}
delayMicroseconds(500);
// wait 0.5ms
digitalWrite(alpPin, LOW);
delayMicroseconds(500);
}
// send 41ms low
digitalWrite(alpPin, LOW);
delay(41);
}

Automatisk avbländande innerbackspegel.

kan vara bra att ha. Nu verkar det vara lite rea på dom på bilskrotarna. 350 kr.
Och inkopplingen verkade enkel enligt den här länken.
Och fästet såg ut att passa för en 9000.
Det knepiga var dom bakre skruvarna till fästet som är dolda under innertaket.
Men skruvar man bara ut dom och låter dom sitta kvar i fästet blir det lättare att
vid återmonteringen. Kopplade in 12 volten ifrån läslampan som får ström när tändningen slås på.
Och jorden nyttja jag från ett av dom främre skruvfästet, runda kabelskon.
Men stirra er inte blinda på färgen på kablarna det blev lite tvärtom liksom.
Flyttade över innerbelysnings lampan till den nya backspegeln fick kapa lite i övredelen
och säkrade fästet med lite lim. "Fasten Seat Belt" lampan hamnade lite när fästet men det funkar.

Och sedan var det bara ut och rejsa iväg och testa grejorna. Man kan hållaför den främre sensorn med ett finger och lysa med ficklampa på spegelsensorn så ser man om den fungerar, också.
Den har lite fördröjning men "dimmar" bra i mellanläge också det är inte bara av och på
funktion på den vilket är bra.