Show Posts
Pages: [1]
1  International / Deutsch / Re: Soft SPI slave on: January 13, 2013, 07:42:23 am
ich bekomme "C0"
Wenn ich "FF" sende bekomme ich "FFFFFFFF"

Code:
#define SCK_PIN   13
#define MISO_PIN  12
#define MOSI_PIN  11
#define SS_PIN    10

volatile char SPI_Byte = 0;
volatile char SPI_Byte_tmp = 0;
volatile boolean Byte_rdy = LOW;
volatile char SPI_Counter = 8;

void setup() {
  
  pinMode(SCK_PIN, INPUT);
  pinMode(MOSI_PIN, INPUT);
  pinMode(MISO_PIN, OUTPUT);
  pinMode(SS_PIN, INPUT);
  
  Serial.begin(115200);
  Serial.println("SPI slave mode");
  attachInterrupt(0, SPI_slave_in, RISING); // RISING or FALLING

}

void loop() {
  
  if (Byte_rdy  == HIGH) {
    Byte_rdy = LOW;
    Serial.print(SPI_Byte, HEX);
    Serial.print("\n");
  }
 
}

void SPI_slave_in()
{
  if(digitalRead(MOSI_PIN) == 1) SPI_Byte_tmp = (SPI_Byte_tmp << 1) | 0x01; //Set "1"
  else SPI_Byte_tmp = (SPI_Byte_tmp << 1) & 0xFE; //Set "0"
  SPI_Counter --;
  
  if (SPI_Counter == 0) {
   Byte_rdy = HIGH;
   SPI_Byte = SPI_Byte_tmp;  
   SPI_Byte_tmp = 0;
   SPI_Counter = 8;
  }
}
2  International / Deutsch / Soft SPI slave on: January 13, 2013, 07:29:04 am
Hallo zusammen,

Ich versuche Soft SPI Slave mit Interrupt zu realisieren.
SPI ist in Mode 3. CH1 – CLK, CH2- Daten.
Meine gewünschte 85 bekomme ich nicht.
Kann mir jemand helfen?

Andrew.


http://farm9.staticflickr.com/8195/8376523960_0f764a23be_b.jpg

Code:
void SPI_slave_in()
{
  if(digitalRead(MOSI_PIN) == 1) SPI_Byte_tmp = (SPI_Byte_tmp << 1) | 0x01; //Set "1"
  else SPI_Byte_tmp = (SPI_Byte_tmp << 1) & 0xFE; //Set "0"
  SPI_Counter --;
 
  if (SPI_Counter == 0) {
   Byte_rdy = HIGH;
   SPI_Byte = SPI_Byte_tmp;   
   SPI_Byte_tmp = 0;
   SPI_Counter = 8;
  }
}
3  International / Deutsch / Re: Encoder PANASONIC EVEQDBRL416B on: December 28, 2012, 06:05:42 am
Logik und Benutzung von false, true, HIGH, LOW, NULL sind unterschiedlich.
Eingang kann nur LOW, NULL sein usw. smiley
4  International / Deutsch / Encoder PANASONIC EVEQDBRL416B on: December 26, 2012, 07:32:26 am
Für meine Bastelei habe ich bei Polin Panasonic Encoder eingekauft.
Ich war richtig enttäuscht, das keine Library auf Arduino Seite mit diesem Encoder richtig laufen kann. Ich habe meinen eigenen Library geschrieben.
Ich hoffe es wird für andere auch nützlich sein.

Code:
/*
  Pan_Encoder_ABC.cpp - A library for reading Encoder PANASONIC EVEQDBRL416B.

  Copyright 2012 Andrew Buckin(aka, "ka_ru"), except for the code at the end marked
  "The following was taken from the Arduino's code."  That portion is copyright by
  Andrew Buckin and is distributed under the GNU Lesser General Public License 2.1
  or any subsequent version.

  For those portions Copyright by Andrew Buckin, the following license applies.

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

Questions?  Send mail to ka_ru2003@msn.com
*/

#include <PinChangeInt.h>

enum PinAssignments {
  encoderPinA = A2,   // rigth
  encoderPinB = A3,   // left
  clearButton = 8    // another two pins
};

volatile unsigned int encoderPos = 100;  // a counter for the dial
unsigned int lastReportedPos = 1;   // change management
static boolean rotating=false;      // debounce management

// interrupt service routine vars
volatile boolean ABc = false;
volatile boolean BBc = false;
volatile boolean AAc = false;
volatile boolean BAc = false;
int8_t clicks = 0;      // Counter to indicate cumulative clicks in either direction
int8_t direction = NULL;   // indicator
int8_t enc = NULL;   // indicator

void setup() {

  pinMode(encoderPinA, INPUT);
  pinMode(encoderPinB, INPUT);
  pinMode(clearButton, INPUT);
 // turn on pullup resistors
  digitalWrite(encoderPinA, HIGH);
  digitalWrite(encoderPinB, HIGH);
  digitalWrite(clearButton, HIGH);

  PCintPort::attachInterrupt(encoderPinA, &doEncoderA, CHANGE);
  PCintPort::attachInterrupt(encoderPinB, &doEncoderB, CHANGE);

  Serial.begin(9600);  // output
}

// main loop, work is done by interrupt service routines, this one only prints stuff
void loop() {
  rotating = true;  // reset the debouncer
  
  if (direction != NULL){
   enc = !NULL;
    if (direction > 0) clicks++;
    else clicks--;
    direction = NULL;
  }
    
  if (enc != NULL) {
    Serial.print("Index:");
    Serial.println(encoderPos  + clicks, DEC);
    enc = NULL;
  }
 
  if (digitalRead(clearButton) == LOW )  {
    encoderPos = 0;
  }
}

// Interrupt on A changing state
void doEncoderA(){
  //delayMicroseconds(50);
  AAc = digitalRead(encoderPinA);
  BAc = digitalRead(encoderPinB);
  if (!ABc && AAc && !BBc && !BAc){direction=1;}
  if (ABc && !AAc && BBc && BAc){direction=1;}
  if (!ABc && AAc && BBc && BAc){direction=-1;}
  if (ABc && !AAc && !BBc && !BAc){direction=-1;}

}

// Interrupt on B changing state
void doEncoderB(){
  //delayMicroseconds(50);
  ABc = digitalRead(encoderPinA);
  BBc = digitalRead(encoderPinB);
}


5  International / Deutsch / Re: Analogeingang absichern on: November 06, 2012, 02:53:32 am


Wenn man linear braucht, dann zwei Widerstände mit Stromquelle ersetzen.
6  International / Deutsch / Re: Analogeingang absichern on: November 05, 2012, 04:41:05 pm
Z-Diode werde ich nicht verwenden.
Z-Dioden haben Große Kapazität und sind sehr langsam.
Zwei Dioden und ein Suppressordiode wie bei USB.
Es ist Bomben fest bis 15Kv kein Problem.
7  International / Deutsch / Re: Hardware für Mini-Dispenser gesucht on: November 05, 2012, 04:32:52 pm
Die Flüssigkeit zu messen hat man richtig viel Möglichkeiten.
Was ein Sensor willst du verwenden?
Ultraschall, Mechanik, Pegel, Zeit?
8  International / Deutsch / Microphone into Arduino on: November 04, 2012, 04:56:27 am
Mein Microfon shield.
Sehr klein Mikrofon vorversterker mit 20dB Fixed-Gain.
http://karu2003.blogspot.de/2012/11/time-machine-microphone.html
9  International / Deutsch / Re: Power shield für Arduino mini bis 40V, mit Encoder und Knopf on: November 01, 2012, 10:05:05 am
Also, der Taster macht folgendes: an und aus.
Bei kurzem drücken wird das Signal zu Arduino geleitet.
Ausschalten durch langes drücken des Tasters für ca. 5s.
Für den Taster wird keine Entprellung benötigt.
So reduziere ich Steuer Elemente.
In Shutdown Mode verbraucht alles weniger als 1uА.
10  International / Deutsch / Power shield für Arduino mini bis 40V, mit Encoder und Knopf on: October 31, 2012, 06:05:45 pm
Ich bin mit meine „Time machine“ weiter gekommen.
Jetzt habe ich Power fertig gemacht. Man kann nur mit einem Knopf an und aus machen und für Menü habe ich einen Encoder.
http://karu2003.blogspot.de/2012/10/time-machine-power.html
11  International / Deutsch / Re: OLED shield für Arduino mini. on: October 28, 2012, 08:33:35 am
Ich bin überzeugt, um ein Schaltung zu lesen braucht man keine Sprache.  smiley
Schaltung in Großehre Auflösung gibt es in flickr stream.
12  International / Deutsch / OLED shield für Arduino mini. on: October 28, 2012, 01:55:00 am
Für meine "Time Machine" habe ich einen Display entwickelt.
Ich hoffe es wird für andere auch interessant.
Modul ist in Arduino Mini Bauform.

http://karu2003.blogspot.de/2012/10/time-machine-display.html
13  Using Arduino / Displays / my OLED 96x16 Arduino shield I2C on: October 27, 2012, 01:59:23 pm
I would like to share with you my OLED shield 96x16 compatible with Arduino mini. (rus)
http://karu2003.blogspot.de/2012/10/time-machine-display.html
14  Using Arduino / Interfacing w/ Software on the Computer / IR > Arduino > PC > Camera DSLR on: January 01, 2012, 06:28:51 am
Hi, Here is my universal Remote Control.
Comments welcome.

http://karu2003.blogspot.com/2012/01/triangle-control-arduino-pc-camera_01.html
Pages: [1]