Sida 2 av 2

Re: Mina microkontroller tokerier

Postat: 31 augusti 2014, 14:07:32
av 1802
Min Arduino UNO kopia fick ben. M3
Bild
typ. Fick fila lite på muttrarna nära USB och power kontakten. OBS "benet" nära USB kontakten kan kortsluta på baksidan.

Labbar med "PID" reglering i processing. Ingen äkta PID än.

Kod: Markera allt

// MinPID Mina "PID" försök
float x=1;float y=100;float m=50;float s=1.50;

void setup(){ 
size(640,200); background(144,107,12); frameRate(50000);
textSize(20); 
//noStroke();
}
void draw()
{  x = x + .7;m=mouseY; 
s=abs((y-m)/30); if (s < 0) { s=1;}
   //delay(40);
  stroke(0); line(x, y+1, x, y+10); 
  stroke(100,255,100);line(x, m+1, x, m);
     if (x > 500) { x=1;background(144,107,12);}
 if (m < y) { y=y-s;}  if (m > y) { y=y+s;}
noStroke();  fill(174,157,12); rect(540, 5, 90, 50);// rensa yta  
  fill(100,255,100); text(m,540,25);
  fill(0,0,0); text(y,540,50);
   delay(10);
 }

Re: Mina microkontroller tokerier

Postat: 12 februari 2015, 16:24:07
av 1802
Köpte en datalogger shield SD RTC. Den lägger beslag på Analog 4 och 5. Jag har en LDR inkopplad på A5 Och några LED på 8 9 10. Bara jag kopplar in shielden, så slutar A5 fungera. Fingrar jag på lödsidan av arduinons A5, så funkar det utan shield men inte med. Enklast är att använda A0-A3. Men det skall gå att modda shielden. Men det hoppar jag över till att börja med.

Första försöket blir att logga LDR (A0) till SD kortet.

Re: Mina microkontroller tokerier

Postat: 21 februari 2015, 02:28:27
av 1802
Efter datorhaveri sitter hårddisken som slav. Arduino IDE fanns där så jag provstartade, Verkade funka, men datorn kännde inte av hårdvaran. Slet med det ett bra tag. Sedan uppdaterade jag Arduino IDE, och hårdvarudrivisarna fick jag på köpet :-) . Detta tog 80% av dagens tokerier grrrr.

Testade examples cardinfo. Hade visst massor av filer på kortet :vissla: den höll på läääänge.

Sedan lite DS1307 RTC tester. Har man väl satt och startat klockan, så måste man rycka batteriet för att ställa om tiden. https://learn.adafruit.com/adafruit-dat ... time-clock är lärorik . Ställer jag tiden före (20)000101 så blir det konstigt typ år 2048. Jag skulle gärna kunna reseta den till äldsta datum. Så vet jag enkelt hur länge den gått sedan start. Jag startar på 000101 00:00 så länge, eller aktuell datum och tid.

Kopplade in min LDR. Men jag fick inte ner värdet vid mörker. Efter en stund kom jag på varför. Power LED på shielden stör :-(. Den sitter såklart nära analog ingångarna grrr. Jag har stor lust att löda bort den.

Min Arduino är lite konstig, pin 10 lyser lite svagt vid start. Så jag nollar den i progget. Trycker jag på shieldens reset lyser den lite tills progget hinner släcka den. Jag har en kopia på
Bild
med 3st 3mm LED på vero. Jag byggde den innan jag såg ovan på ebay. Så nu bygger jag inga fler....

Kod: Markera allt

// Date and time functions using a DS1307 RTC connected via I2C and Wire lib

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 rtc;
  int led = 13;  int PIN8 = 8;
  int sensorPin = A0;    // select the input pin for the potentiometer
 int sensorValue = 0;  // variable to store the value coming from the sensor
 
void setup () {
  Serial.begin(57600);
Serial.println("RTC reset");
#ifdef AVR
  Wire.begin();
#else
  Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
#endif
  rtc.begin();

  if (! rtc.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    //     rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 1, 2000 at 0am you would call:
     //    rtc.stop();  RTC.start();     
 rtc.adjust(DateTime(2000, 1, 1, 0, 0, 0));
  }
}

void loop () {
    DateTime now = rtc.now();
    
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
    
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now.unixtime() + 7 * 86400L + 30);
    
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
    Serial.println();
      sensorValue = analogRead(sensorPin);  
      Serial.println(sensorValue); 
     digitalWrite(13, HIGH); 
      analogWrite(PIN8, 255);
    delay(500);
     digitalWrite(13, LOW); 
     analogWrite(PIN8, 0); analogWrite(10, 0);
    delay(500);
}


Re: Mina microkontroller tokerier

Postat: 22 februari 2015, 14:53:23
av 1802
Med följande lyckades jag starta från år 0.

Kod: Markera allt

#include <Wire.h>
#include "DS1307.h"

int rtc[7];  
DS1307 RT = DS1307();

void setup()
{
  Serial.begin(9600);
  RT.init();
  //*
  RT.stop();
  RT.set(DS1307_SEC,0);
  RT.set(DS1307_MIN,0);
  RT.set(DS1307_HR,0);
  RT.set(DS1307_DOW,2);
  RT.set(DS1307_DATE,1);
  RT.set(DS1307_MTH,1);
  RT.set(DS1307_YR,0);
  RT.start();
  //*/
}

void loop()
{
  RT.get(rtc,true);

/*  for(int i=0; i<7; i++)
  {
    Serial.print(rtc[i]);
    Serial.print(" ");
  }
*/ 
   Serial.print(rtc[6]); Serial.print(" ");    
   Serial.print(rtc[5]); Serial.print(" ");
   Serial.print(rtc[4]); Serial.print(" ");    
   Serial.print(rtc[2]); Serial.print(":");
   Serial.print(rtc[1]); Serial.print(".");    
   Serial.print(rtc[0]); 
   
  Serial.println();

  delay(1000);

}
include "DS1307.h" Var lite struligt att få igång.

Kod: Markera allt

/* 
   DS1307.h - library for DS1307 RTC
   
   for Arduino 1.0 and above
   June 28th, 2013
*/
I .cpp filen finns raden "#define DS1307_BASE_YR 2010" , som man kan ändra efter behag. Den + RT.set(DS1307_YR,0); Ger önskat år.

Re: Mina microkontroller tokerier

Postat: 16 april 2015, 21:57:08
av 1802
Fick hem en VISduino(ATmega328P CH340G UNO R3) arduino clone. Datorn ville inte hitta den :-(. Så jag uppgraderade till ArduinoIDE 1.6.3 . Men den ville inte starta :-( . Tillbaka till 1.6.0. VISduino kräver drivrutin. Jag hittade den, och nu funkar det. 16U4 ersatt av CH340G för USB delen. Drivrutin http://www.5v.ru/zip/ch341ser.zip

Re: Mina microkontroller tokerier

Postat: 29 juli 2015, 13:35:23
av 1802
Knåpar på en ficklampa. Med.
Bild
Bild

Lite kod.

Kod: Markera allt

// Ficklampa
#include <Adafruit_NeoPixel.h>
#define PIN 0
#define STRIPSIZE 1
// Parameter 1 = number of pixels in strip // Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(STRIPSIZE, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.setBrightness(55);  // Lower to 25 brightness and save eyeballs!
  strip.show(); // Initialize all pixels to 'off'
  int led =  1;  // 13 = uno  1 = attiny
  pinMode(led, OUTPUT); pinMode(5, INPUT);  pinMode(4, OUTPUT); 
//  const int analogInPin = 0;  // Analog input pin 5= uno  0 = pin5 digistump
//  int sensorValue = 0;        // value read from the pot
//  Serial.begin(9600); 
}

void loop() {
   int sensorValue = 0;        // value read from the pot 
   int outputValue = 0;        // value output to 
   int led =  1;  // 13 = uno  1 = attiny
   const int analogInPin = 0;  // Analog input pin 5= uno  0 = pin5 digistump
    //sensorValue = analogRead(0); //Read P5     //To set to input: pinMode(5, INPUT);
    // P5 is analog input 0, so when you are using analog read, you refer to it as 0.
lvit:  // låg vit
  digitalWrite(led, HIGH); digitalWrite(4, HIGH);  
   //    sensorValue = analogRead(0); 
      outputValue = map(sensorValue, 0, 1023, 0, 255);  
  colorWipe(strip.Color(100,100,100), 25); // White not max
   if (sensorValue < 150) {digitalWrite(led, HIGH);  delay( 2500); goto mvit; }
//      Serial.print(sensorValue); Serial.println(" lvit");
     delay(500);    
goto lvit;
mvit:     
  digitalWrite(led, LOW);  
     sensorValue = analogRead(analogInPin); 
  colorWipe(strip.Color(sensorValue,0,0), 25); // White not max
   if (sensorValue > 150) {digitalWrite(led, LOW);  delay(2500); goto hvit; }
//      Serial.print(sensorValue); Serial.println(" mvit");
     delay(500);    
goto mvit;
hvit:
  digitalWrite(led, HIGH);  
     sensorValue = analogRead(analogInPin); 
  colorWipe(strip.Color(0,sensorValue,0), 25); // White not max
   if (sensorValue > 150) {digitalWrite(led, HIGH); delay(2500); goto roed;}
//      Serial.print(sensorValue); Serial.println(" hvit");
     delay(500);    
goto hvit;
roed:
  digitalWrite(led, LOW);
     sensorValue = analogRead(analogInPin); 
  colorWipe(strip.Color(0,0,sensorValue), 25); // Red
//   Serial.print(sensorValue); Serial.println(" red");
  delay(2500);    
 //  colorWipe(strip.Color(0, 64, 0), 100); // Green
 //   delay(2500);    
 //  colorWipe(strip.Color(0, 0, 64), 100); // Blue
 //   delay(2500);  

 
}

// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
      strip.show();
      delay(wait);
   }
}



// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
  if(WheelPos < 85) {
   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  } else if(WheelPos < 170) {
   WheelPos -= 85;
   return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
   WheelPos -= 170;
   return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}

Funkar inte helt. Lite moddad version funkar på min Arduino UNO. Jag har inte lärt mig serial debug på digisparken. Så jag ser inte hur analog in jobbar.

Det kommer att bli fler funktioner. Den drivs nu med en batteribankficklampa :shock: . Men jag bygger nog in den i en gammal ficklampa. Med 18650 batteri och USB laddkontroller.
Om det behövs av platsskäl, blir det liknande en.
[img]http://www.höglandskompaniet.se/public/img/user/403.jpg[/img]

Funktioner:
* Vitt ljus i olika styrkor
* Olika färger
* Pulsning för energispar och skicka div koder
* Div givare tex temp ljus tilt kompass m.m

Fyll gärna på med fler.