Analog In dělá přesně to, co říká - pouze čte (vzorky) úrovně analogového napětí.
Použití AnalogWrite (0,2) nečiní pin A0 v Analog In pro výstup napětí 2 * AVCC / 1024, ale místo toho dělá pin D0, který to dělá. (Většina pinů D0 na deskách Arduino nemá s nimi spojený výstup PWM, takže chování by nebylo definováno.) Mezitím vaše A0 nedělá nic. (Mám podezření, že je to plovoucí / nepřipojené, proto hodnota 3xx. Mohl bych si pro jistotu zkontrolovat datový list.)
Takže co bychom měli dělat místo toho? Pro začátek připojte A0 Arduino B k pwm kolíku Arduino A. Pokud používáte Uno, můžete se připojit k některému z pinů 11,10,9,6,5,3. Pak můžete použít kód:
int PWMPin = 11; int SignalLvl = 2; analogWrite (PWMPin, SignalLvl);
Zkuste to. A uvidíte, že to funguje ... tak nějak.
Ale pak je tu problém. vaše čtení se bude blížit tomu, co chcete, ale docela nepravidelné. Důvod je částečně proto, že analogové signály jsou velmi nespolehlivé a jsou plné šumu. Ale hlavním důvodem je ve skutečnosti to, že Arduino's analogWrite ve skutečnosti NENÍ navrženo jako výstup analogového signálu. Jedná se o PWM, který vydává úrovně GND a AVcc v různých obdobích vysokou rychlostí, takže se při průměrování přibližuje požadované úrovni napětí.
Pokud s tím chcete experimentovat, můžete k výstupu připojit rezistor a kondenzátor a vytvořit dolní propust. (Zde je více informací: http://provideyourown.com/2011/analogwrite-convert-pwm-to-voltage/)
Když už jsem to řekl, myslím otázka, kterou by se většina z nás chtěla zeptat, je: existuje důvod, proč chcete posílat data přes analog? Analogové signály jsou náchylné k šumu. Pokud je věrnost dat kritická, je nejlepší použít sériovou komunikaci, jak je zde zvýrazněno většinou odpovědí.
Pro zjednodušení navrhuji I2c, který ke komunikaci používá pouze 2 vodiče. Pokud je rychlost zásadní (například zápis na 10 000 bajtů dat každou sekundu), můžete zkusit SPI nebo dokonce paralelní komunikaci.
Doufám, že to pomůže a hodně štěstí!